• GPSMap程序源代码


    1. 界面

    第一次打开时选择工程文件

    MainActivity.java

    Tools.OpenDialog(new ICallback(){
    public void OnClick(String paramAnonymousString, Object paramAnonymousObject)
    {
    PubVar.m_DoEvent.DoCommand("工程_选择");
    }
    });

    DoEvent.java

    public void DoCommand(String paramString)
    {
            //this.C = C;
            Param paramString2 = null;
            Object localObject = paramString.split("_");
            //如果是工程
            if ((((String[])localObject).length == 2) && (((String[])localObject)[0].equals("工程"))) { //比如""工程_选择"
                  Log.d("DoEvent", "工程_选择");
                  this.m_DoEvent_Project.DoCommand(paramString);
            }
    ......
    }

    DoEvent_Project.java

    public void DoCommand(String paramString)
    {
          DoCommand(paramString, null);
    }
        
    public void DoCommand(String paramString, final ICallback paramICallback)
    {
            if(paramString.equals("工程_选择")){
                //new v1_project_select().ShowDialog();
                Log.d("DoEvent_Project", "Into DoEvent Project");
                //new v1_project_select();
                //new v1_project_select().ShowDialog();
                //new v1_FormTemplate(PubVar.m_DoEvent.m_Context).show();
                //new v1_FormTemplate(MainActivity).show();
                Log.d("DoEvent_Project", "ShowDialog?");
            }
    ...... }

     加载prj_List工程列表()

     v1_project_select.java

    this._Dialog.setOnShowListener(new DialogInterface.OnShowListener() { //显示监听
                
                @Override
                public void onShow(final DialogInterface paramAnonymousDialogInterface) { //每当显示时
                    // TODO Auto-generated method stub
                    v1_project_select.this.LoadProjectListInfo(); //加载工程列表
                    int i = 0;
                    Object localObject = null;
                    HashMap<String, String> paramAnonymousDialogInterface2 = null;
                    
                    if(PubVar.m_HashMap.GetValueObject("Tag_BeforeOpenProject")==null)
                    {
                        PubVar.m_HashMap.GetValueObject("Tag_BeforeOpenProject", true);
                        paramAnonymousDialogInterface2 = PubVar.m_DoEvent.m_UserConfigDB.GetUserParam().GetUserPara("Tag_BeforeOpenProject");
                        paramAnonymousDialogInterface3 = paramAnonymousDialogInterface2.get("F2");
                        if(paramAnonymousDialogInterface2 == null){
                            return;
                        }
                        i = 0;
                        localObject = v1_project_select.this.m_HeaderListViewDataItemList.iterator();
                    }
                    for(;;)
                    {
                        if(!((Iterator)localObject).hasNext())
                        {
                            if(i != 0)
                            {
                                localObject = String.format("是否打开上次工程?
    
    工程名称:%1$
    上次时间:%2$s", new Object[]{
                                        paramAnonymousDialogInterface2.get("F3")
                                });
                                Tools.ShowYesNoMessage(v1_project_select.this._Dialog.getContext(), (String)localObject,
                                        new ICallback(){
    
                                            @Override
                                            public void OnClick(String paramAnonymous2String,
                                                    Object paramAnonymous2Object) {
                                                // TODO Auto-generated method stub
                                                Tools.OpenDialog("正在打开工程...", new ICallback(){
    
                                                    @Override
                                                    public void OnClick(
                                                            String paramAnonymous3String,
                                                            Object paramAnonymous3Object) {
                                                        // TODO Auto-generated method stub
                                                        //v1_project_select.this.OpenProject((String)this.val$beforeOpenPrjInfo.get("F2"));
                                                        v1_project_select.this.OpenProject(paramAnonymousDialogInterface3);
                                                        v1_project_select.this._Dialog.dismiss();
                                                    }
                                                    
                                                });
                                            }
                                    
                                });
                            }
                        if((v1_project_select.this.m_HeaderListViewDataItemList.size()!=0)||(PubVar.m_DoEvent.m_ProjectDB.AlwaysOpenProject())){
                            break;
                        }
                        Tools.ShowYesNoMessage(v1_project_select.this._Dialog.getContext(), "当前没有创建任何工程,是否需要创建工程?", new ICallback(){
    
                            @Override
                            public void OnClick(String paramAnonymous2String,
                                    Object paramAnonymous2Object) {
                                // TODO Auto-generated method stub
                                if(paramAnonymous2String.equals("YES")){
                                    v1_project_select.this.pCallback.OnClick("新建工程", "");
                                }
                            }
                            
                        });
                        return;
                        }
                        if(((HashMap)((Iterator)localObject).next()).get("D2").equals(paramAnonymousDialogInterface2.get("F2"))){
                          i = 1;
                        }
                    }
                }
            });
    View Code

     v1_project_select.java中的LoadProjectListInfo()函数

    protected void LoadProjectListInfo() {
            // TODO Auto-generated method stub
            v1_HeaderListViewFactory localv1_HeaderListViewFactory = new v1_HeaderListViewFactory();
            localv1_HeaderListViewFactory.SetHeaderListView(this._Dialog.findViewById(R.id.ll_projectlist), "工程列表"
                    , new ICallback(){
    
                        @Override
                        public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
                            // TODO Auto-generated method stub
                            if(paramAnonymousString.equals("列表选项"))
                            {
                                v1_project_select.this._Dialog.GetButton("1").setEnabled(true); //formtemp_4
                                v1_project_select.this.ShowDataPreview((HashMap)paramAnonymousObject);
                            }
                        }
                
            }); //设置头列表视图
            Object localObject1 = Tools.GetProjectList();
            String str1 = "";
            Object localObject2 = PubVar.m_HashMap.GetValueObject("Project");
            if(localObject2 != null){
                str1 = ((HashValueObject)localObject2).Value;
            }
            this.m_HeaderListViewDataItemList = new ArrayList();
            localObject1 = ((List)localObject1).iterator();
            ///*
            for(;;)
            {
                if(!((Iterator)localObject1).hasNext())
                {
                    localv1_HeaderListViewFactory.BindDataToListView(this.m_HeaderListViewDataItemList, new ICallback(){
    
                        @Override
                        public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
                            // TODO Auto-generated method stub
                            v1_project_select.this.OpenDetailProjectInfo((HashMap)paramAnonymousObject);
                            v1_project_select.this.ShowDataPreview((HashMap)paramAnonymousObject); //显示数据预览
                        }
                        
                    }); //绑定数据到ListView
                    return;
                }
                String localObject3 = (String)((Iterator)localObject1).next();
                if(!str1.equals(localObject3.split(",")[0]))
                {
                    String str2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Long.parseLong(localObject3.split(",")[1])));
                    HashMap localHashMap = new HashMap();
                    localHashMap.put("D1", Boolean.valueOf(false));
                    localHashMap.put("D2", localObject3.split(",")[0]);
                    localHashMap.put("D3", str2);
                    localHashMap.put("D4", BitmapFactory.decodeResource(PubVar.m_DoEvent.m_Context.getResources(), R.drawable.v1_rightmore));
                    this.m_HeaderListViewDataItemList.add(localHashMap);
                }
                Log.d("v1_project_select", "After Project List");
            }
            //*/
            
        }
    View Code

     v1_HeaderListViewFactory.java中的SetHeaderListView(View paramView, String paramString, final ICallback paramICallback)

    public void SetHeaderListView(View paramView, String paramString, final ICallback paramICallback)
      {
          this.m_HeaderView_Scroll = (RelativeLayout)paramView.findViewById(R.id.rt_header_scroll); //RelativeLayout
          Log.d("v1_HeaderListView", "Into v1_HeaderListView");
          ViewGroup.LayoutParams localLayoutParams = this.m_HeaderView_Scroll.getLayoutParams();
          localLayoutParams.width = paramView.getMeasuredWidth();
          this.m_HeaderView_Scroll.setLayoutParams(localLayoutParams);
          this.m_ListView_Scroll = (ListView)paramView.findViewById(R.id.rt_listview_scroll); //ListView
          this.m_ListView_Scroll.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    
            @Override
            public void onItemClick(AdapterView<?> paramAnonymousAdapterView, View paramAnonymousView, int paramAnonymousInt,
                    long paramAnonymousLong) {
                // TODO Auto-generated method stub
                v1_HeaderListViewAdpter paramAnonymousAdapterView2 = (v1_HeaderListViewAdpter)((ListView)paramAnonymousAdapterView).getAdapter();
                paramAnonymousAdapterView2.SetSelectItemIndex(paramAnonymousInt);
                paramAnonymousAdapterView2.notifyDataSetInvalidated();
                if(paramICallback != null){
                    paramICallback.OnClick("列表选项", paramAnonymousAdapterView.getItemAtPosition(paramAnonymousInt));
                }
            }
              
          });
          if(this.m_HeaderListViewTemplate == null){
             this.m_HeaderListViewTemplate = new v1_HeaderListViewTemplate(); 
          }
          Log.d("v1_HeaderListViewFactory", "Before Report");
          this.m_HeaderListViewTemplate.CreateReport(this.m_HeaderView_Scroll, paramString); //传参“工程列表”,在HeaderView_Scroll中创建表头
          Log.d("v1_HeaderListViewFactory", "After Report");
      }
    View Code

     v1_HeaderListViewTemplate.java的CreateReport(RelativeLayout paramRelativeLayout, String paramString)

    public void CreateReport(RelativeLayout paramRelativeLayout, String paramString) { //创建报告列表
    // TODO Auto-generated method stub
    this.m_ReportHeader = new ReportHeader();
    Object localObject1 = new ArrayList();
    List localList = null;
    if (paramString.equals("我的坐标系"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("坐标系统", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("中央经线", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("转换方法", 1, 1, 4, 4, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[]{-30, -30, -20, -20}); 
    }
    if (paramString.equals("工程列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("选择", 1, 1, 1, 1, false, lkHeaderListViewItemType.enCheckBox));
    ((List)localObject1).add(new ReportHeaderInfo("工程名称", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("创建时间", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("详细", 1, 1, 4, 4, false, lkHeaderListViewItemType.enImage));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -15, -40, -30, -15 });
    }
    if (paramString.equals("图层列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("显示", 1, 1, 1, 1, false, lkHeaderListViewItemType.enCheckBox));
    ((List)localObject1).add(new ReportHeaderInfo("名称", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("类型", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("符号", 1, 1, 4, 4, false, lkHeaderListViewItemType.enImage));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -15, -50, -15, -20 });
    }
    if (paramString.equals("导出图层列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("导出", 1, 1, 1, 1, false, lkHeaderListViewItemType.enCheckBox));
    ((List)localObject1).add(new ReportHeaderInfo("名称", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("类型", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数量", 1, 1, 4, 4, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -15, -50, -15, -20 });
    }
    if (paramString.equals("图层模板列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("图层类型", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数据量", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -40, -25, -35 });
    }
    if (paramString.equals("加载图层模板列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("图层类型", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -50, -50 });
    }
    if (paramString.equals("统计_点图层"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数据量", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -50, -50 });
    }
    if (paramString.equals("统计_线图层"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数据量", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("长度(米)", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -40, -20, -40 });
    }
    if (paramString.equals("统计_面图层"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数据量", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("面积(平方米)", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -40, -20, -40 });
    }
    if (paramString.equals("符号列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("符号", 1, 1, 2, 2, false, lkHeaderListViewItemType.enImage));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -50, -50 });
    }
    if (paramString.equals("字段列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("类型", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("大小", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("精度", 1, 1, 4, 4, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("数据字典", 1, 1, 5, 5, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -40, -20, -10, -10, -20 });
    }
    if (paramString.equals("底图文件列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("文件名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("创建时间", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -50, -50 });
    }
    if (paramString.equals("当前图层"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层名称", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("采集数量", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -50, -50 });
    }
    if (paramString.equals("字典类别列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("字典类别", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -100 });
    }
    if (paramString.equals("条目大类列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("条目大类", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -100 });
    }
    if (paramString.equals("条目细类列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("条目细类", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -100 });
    }
    if (paramString.equals("多实体属性列表"))
    {
    ((List)localObject1).add(new ReportHeaderInfo("图层", 1, 1, 1, 1, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("类型", 1, 1, 2, 2, false, lkHeaderListViewItemType.enText));
    ((List)localObject1).add(new ReportHeaderInfo("属性", 1, 1, 3, 3, false, lkHeaderListViewItemType.enText));
    localList = ConverDipToPix(paramRelativeLayout, new int[] { -30, -20, -50 });
    }
    Log.d("v1_HeaderListViewTemplate", "CreateReport1");
    Object localObject2;
    int m;
    int i = 0;
    i = 0;
    int k = 0;
    int j = 0;
    Iterator paramString2 = localList.iterator(); //宽度数列
    if(!paramString2.hasNext())
    {
    k = paramRelativeLayout.getLayoutParams().width; //Layout宽度值
    j = 0;
    if(j < localList.size()){
    //break;
    return;
    }
    }
    View paramString3;
    for(;;)
    {
    if(!paramString2.hasNext())
    {
    paramString3 = ((LinearLayout)paramRelativeLayout.getParent()).getChildAt(1);
    localObject2 = paramString3.getLayoutParams();
    ((ViewGroup.LayoutParams)localObject2).width = i; //宽度设置
    paramString3.setLayoutParams((ViewGroup.LayoutParams)localObject2);
    this.m_ReportHeader.SetHeaderInfoList((List)localObject1); //头信息数列
    this.m_ReportHeader.SetHeaderWidthList(localList); //宽度数列
    m = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 40.0F, paramRelativeLayout.getResources().getDisplayMetrics());
    paramString2 = ((List)localObject1).iterator();
    if(!paramString2.hasNext()){
    break;
    }
    return;
    }
    //j = ((Integer)paramString2.next()).intValue();
    /*
    if(j <= 0){
    Log.d("v1_HeaderListViewTemplate", String.valueOf(j));
    break;
    }*/
    //i += j;
    m = ((Integer)localList.get(j)).intValue();
    if(m < 0){
    localList.set(j, Integer.valueOf((int)(Math.abs(Double.parseDouble(String.valueOf(m))) / 100.0D * Double.parseDouble(String.valueOf(k - i)))));
    }
    j += 1;
    i += ((Integer)paramString2.next()).intValue();
    }
    //paramString2 = localList.iterator();
    localObject1 = (ReportHeaderInfo)paramString2.next();
    i = 0;
    k = 0;
    j = 0;
    if(j >= ((ReportHeaderInfo)localObject1).StartCol - 1){
    j = 0;
    }
    for(;;)
    {
    if(j >= ((ReportHeaderInfo)localObject1).EndCol)
    {
    localObject2 = new TextView(paramRelativeLayout.getContext());
    ((TextView)localObject2).setText(((ReportHeaderInfo)localObject1).Text);
    ((TextView)localObject2).setBackgroundResource(R.layout.v1_bk_table_header);
    ((TextView)localObject2).setGravity(Gravity.CENTER);
    //((TextView)localObject2).setTextAppearance(paramRelativeLayout.getContext(), R.style)
    ((TextView)localObject2).setTextColor(Color.GRAY);
    RelativeLayout.LayoutParams localLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    localLayoutParams.leftMargin = i;
    localLayoutParams.topMargin = ((((ReportHeaderInfo)localObject1).StartRow - 1) * m);
    localLayoutParams.width = (k - i);
    localLayoutParams.height = ((((ReportHeaderInfo)localObject1).EndRow - ((ReportHeaderInfo)localObject1).StartRow + 1)*m);
    paramRelativeLayout.addView((View)localObject2, localLayoutParams);
    i += ((Integer)localList.get(j)).intValue();
    j += 1;
    break;
    }
    
    k += ((Integer)localList.get(j)).intValue();
    j += 1;
    }
    Log.d("v1_HeaderListViewTemplate", "AfterCreateReport");
    
    }
    View Code

     v1_HeaderListViewFactory.java的BindDataToListView(List<HashMap<String, Object>> paramList, ICallback paramICallback) 绑定数据到ListView中

     public void BindDataToListView(List<HashMap<String, Object>> paramList, ICallback paramICallback) //绑定数据到ListView中
      {
          List localList = this.m_HeaderListViewTemplate.GetReportHeader().m_HeaderInfoList;
          String[] arrayOfString = new String[localList.size()];
          int[] arrayOfInt = new int[localList.size()]; //TextView的id
          Log.d("v1_HeaderListViewFactory", "localList size:" + String.valueOf(localList.size()));
          int i = 0;
          for(;;)
          {
              if(i >= localList.size())
              {
                  v1_HeaderListViewAdpter paramList2 = new v1_HeaderListViewAdpter(this.m_ListView_Scroll.getContext(), paramList,
                          R.layout.v1_reporttableitem, arrayOfString, arrayOfInt, this.m_HeaderListViewTemplate.GetReportHeader());
                  paramList2.SetCallback(paramICallback);
                  this.m_ListView_Scroll.setAdapter(paramList2);
                  this.m_ListView_Scroll.setDivider(null);
                  return;
              }
              v1_HeaderListViewTemplate.ReportHeaderInfo localReportHeaderInfo = (v1_HeaderListViewTemplate.ReportHeaderInfo)
                      this.m_HeaderListViewTemplate.GetReportHeader().m_HeaderInfoList.get(i);
              arrayOfString[i] = ("D" + (i+1));
              if(localReportHeaderInfo.ItemType == lkHeaderListViewItemType.enImage){
                  arrayOfInt[i] = R.id.rp_itemimage1;
              }
              if(localReportHeaderInfo.ItemType == lkHeaderListViewItemType.enText){
                  arrayOfInt[i] = new int[]{R.id.rp_itemtext1, R.id.rp_itemtext2, R.id.rp_itemtext3, R.id.rp_itemtext4,
                          R.id.rp_itemtext5, R.id.rp_itemtext6, R.id.rp_itemtext7, R.id.rp_itemtext8, R.id.rp_itemtext9,
                          R.id.rp_itemtext10, R.id.rp_itemtext11, R.id.rp_itemtext12}[i];
              }
              Log.d("v1_HeaderListViewFactory", localReportHeaderInfo.Text);
              if(localReportHeaderInfo.ItemType == lkHeaderListViewItemType.enCheckBox){
                  arrayOfInt[i] = R.id.rp_itemlayout;
              }
              i += 1;
          }
      }
    View Code

     v1_myScrollView.java控件ScrollView

    public class v1_myScrollView extends ScrollView {
      private GestureDetector mGesture;
      private GestureDetector.OnGestureListener mOnGesture = new GestureDetector.SimpleOnGestureListener(){
          public boolean onDown(MotionEvent paramAnonymousMotionEvent)
          {
              return true;
          }
      };
      
      private v1_myScrollView m_bindScrollView = null;
      
      public v1_myScrollView(Context paramContext)
      {
          super(paramContext);
          this.mGesture = new GestureDetector(paramContext, this.mOnGesture);
      }
      
      public v1_myScrollView(Context paramContext, AttributeSet paramAttributeSet)
      {
          super(paramContext, paramAttributeSet);
          this.mGesture = new GestureDetector(paramContext, this.mOnGesture);
      }
      
      public v1_myScrollView(Context paramContext, AttributeSet paramAttributeSet, int paramInt)
      {
          super(paramContext, paramAttributeSet, paramInt);
      }
      
      public void SetBindScrollView(v1_myScrollView paramv1_myScrollView)
      {
          this.m_bindScrollView = paramv1_myScrollView;
      }
      
      public boolean dispatchTouchEvent(MotionEvent paramMotionEvent)
      {
          super.dispatchTouchEvent(paramMotionEvent);
          return this.mGesture.onTouchEvent(paramMotionEvent);
      }
      
      protected void onScrollChanged(int paramInt1, int paramInt2, int paramInt3, int paramInt4) //滚动事件
      {
          super.onScrollChanged(paramInt1, paramInt2, paramInt3, paramInt4);
          if(this.m_bindScrollView != null){
              this.m_bindScrollView.scrollTo(0, paramInt2);
          }
      }
    }
    View Code

    v1_ProjectDB.java 打开工程 OpenProject(String paramString, boolean paramBoolean)

        public boolean OpenProject(String paramString, boolean paramBoolean)
        {
            boolean bool = true;
            Object localObject = PubVar.m_SysAbsolutePath + "/Data/" + paramString + "/Project.dbx";
            if(!Tools.ExistFile((String)localObject)){
                bool = false;
            }
            if(!paramBoolean)
            {
                OpenDatabase((String)localObject);
                if(this.m_ProjectExplorer == null){
                    this.m_ProjectExplorer = new v1_ProjectExplorer();
                }
                this.m_ProjectExplorer.SetBindProjectDB(this);
                this.m_ProjectExplorer.SetProjectName(paramString);
                this.m_ProjectExplorer.LoadProjectInfo();
                if(this.m_LayerExplorer == null){
                    this.m_LayerExplorer = new v1_LayerExplorer();
                }
                this.m_LayerExplorer.SetBindProjectDB(this);
                this.m_LayerExplorer.LoadLayer();
                if(this.m_BKLayerExplorer == null){
                    this.m_BKLayerExplorer = new v1_BKLayerExplorer();
                }
                this.m_BKLayerExplorer.SetBindProjectDB(this);
                this.m_BKLayerExplorer.LoadBKLayer();
                this.m_AlwaysOpenProject = true;
                return true;
            }
                
            //}while(!paramBoolean);
            ((HashMap)localObject).put("F2", paramString);
            ((HashMap)localObject).put("F3", Tools.GetSystemDate());
            PubVar.m_DoEvent.m_UserConfigDB.GetUserParam().SaveUserPara("Tag_BeforeOpenProject", (HashMap)localObject);
            return true;
        }

    v1_ProjectExplorer工程管理

    public class v1_ProjectExplorer {
        private CoorSystem m_CoorSystem = null;
        private v1_ProjectDB m_ProjectDB = null;
        private String m_ProjectName = "";
        private String m_Project_CreateTime = "";
    
        public void SetBindProjectDB(v1_ProjectDB paramv1_ProjectDB) {
            // TODO Auto-generated method stub
            this.m_ProjectDB = paramv1_ProjectDB;
        }
    
        public void SetProjectName(String paramString) {
            // TODO Auto-generated method stub
            this.m_ProjectName = paramString;
        }
    
        public void LoadProjectInfo() {
            // TODO Auto-generated method stub
            if(this.m_CoorSystem == null){
                this.m_CoorSystem = new CoorSystem();
            }
            SQLiteDataReader localSQLiteDataReader = this.m_ProjectDB.GetSQLiteDatabase().Query("select * from T_Project where SYS_ID=2");
            if(localSQLiteDataReader.Read())
            {
                this.m_Project_CreateTime = localSQLiteDataReader.GetString("CreateTime");
                this.m_CoorSystem.SetName(localSQLiteDataReader.GetString("CoorSystem"));
                this.m_CoorSystem.SetCenterMeridian(Integer.parseInt(localSQLiteDataReader.GetString("CenterMeridian")));
                this.m_CoorSystem.SetCoorTransMethodName(localSQLiteDataReader.GetString("TransMethod"));
                this.m_CoorSystem.SetTransToP31(localSQLiteDataReader.GetString("P31"));
                this.m_CoorSystem.SetTransToP32(localSQLiteDataReader.GetString("P32"));
                this.m_CoorSystem.SetTransToP33(localSQLiteDataReader.GetString("P33"));
                this.m_CoorSystem.SetTransToP41(localSQLiteDataReader.GetString("P41"));
                this.m_CoorSystem.SetTransToP42(localSQLiteDataReader.GetString("P42"));
                this.m_CoorSystem.SetTransToP43(localSQLiteDataReader.GetString("P43"));
                this.m_CoorSystem.SetTransToP44(localSQLiteDataReader.GetString("P44"));
                this.m_CoorSystem.SetTransToP71(localSQLiteDataReader.GetString("P71"));
                this.m_CoorSystem.SetTransToP72(localSQLiteDataReader.GetString("P72"));
                this.m_CoorSystem.SetTransToP73(localSQLiteDataReader.GetString("P73"));
                this.m_CoorSystem.SetTransToP74(localSQLiteDataReader.GetString("P74"));
                this.m_CoorSystem.SetTransToP75(localSQLiteDataReader.GetString("P75"));
                this.m_CoorSystem.SetTransToP76(localSQLiteDataReader.GetString("P76"));
                this.m_CoorSystem.SetTransToP77(localSQLiteDataReader.GetString("P77"));
            }
            localSQLiteDataReader.Close();
            localSQLiteDataReader = PubVar.m_DoEvent.m_ConfigDB.GetSQLiteDatabase().Query("select * from T_CoorSystem where name = '" + this.m_CoorSystem.GetName() + "'");
            if(localSQLiteDataReader.Read())
            {
                this.m_CoorSystem.SetA(Double.parseDouble(localSQLiteDataReader.GetString("a")));
                this.m_CoorSystem.SetB(Double.parseDouble(localSQLiteDataReader.GetString("b")));
                this.m_CoorSystem.SetEasting(Double.parseDouble(localSQLiteDataReader.GetString("Easting")));
            }
            localSQLiteDataReader.Close();
        }
    
        public CoorSystem GetCoorSystem() { //创建坐标系统
            // TODO Auto-generated method stub
            return this.m_CoorSystem;
        }
        
        public String GetProjectCreateTime()
        {
            return this.m_Project_CreateTime;
        }
    
        public String GetProjectDataFileName() {
            // TODO Auto-generated method stub
            return GetProjectFullName() + "/TAData.dbx";
        }
        
        public String GetProjectDataPreviewImageName()
        {
            return GetProjectFullName() + "/DataPreview.jpg";
        }
    
        public String GetProjectFullName() {
            // TODO Auto-generated method stub
            return PubVar.m_SysAbsolutePath + "/Data/" + this.m_ProjectName;
        }
    
    }
    View Code

    v1_LayerExplorer图层管理

      public class v1_LayerExplorer {
        private List<v1_Layer> m_LayerList = new ArrayList();
        private v1_ProjectDB m_ProjectDB = null;
    
        public void SetBindProjectDB(v1_ProjectDB paramv1_ProjectDB) {
            // TODO Auto-generated method stub
            this.m_ProjectDB = paramv1_ProjectDB;
        }
    
        public void LoadLayer() {
            // TODO Auto-generated method stub
            this.m_LayerList.clear();
            SQLiteDataReader localSQLiteDataReader = this.m_ProjectDB.GetSQLiteDatabase().Query("select * from T_Layer order by SortID");
            if(localSQLiteDataReader == null){
                return;
            }
            while(localSQLiteDataReader.Read())
            {
                v1_Layer localv1_Layer = new v1_Layer();
                localv1_Layer.SetLayerID(localSQLiteDataReader.GetString("ID"));
                localv1_Layer.SetLayerName(localSQLiteDataReader.GetString("Name"));
                localv1_Layer.SetLayerTypeName(localSQLiteDataReader.GetString("Type"));
                localv1_Layer.SetVisible(Boolean.parseBoolean(localSQLiteDataReader.GetString("Visible")));
                localv1_Layer.SetSymbolName(localSQLiteDataReader.GetString("Symbol"));
                localv1_Layer.SetFieldList(localSQLiteDataReader.GetString("FieldList"));
                localv1_Layer.SetIfLabel(Boolean.parseBoolean(localSQLiteDataReader.GetString("IfLabel")));
                localv1_Layer.SetLabelField(localSQLiteDataReader.GetString("LabelField"));
                localv1_Layer.SetLabelFont(localSQLiteDataReader.GetString("LabelFont"));
                this.m_LayerList.add(localv1_Layer);
            }
            localSQLiteDataReader.Close();
        }
        
        public boolean SaveLayerFormLayerList(List<v1_Layer> paramList)
        {
            this.m_LayerList.clear();
            Iterator paramList2 = paramList.iterator();
            for(;;)
            {
                if(!paramList2.hasNext()){
                    return true;
                }
                v1_Layer localv1_Layer = (v1_Layer)paramList2.next();
                this.m_LayerList.add(localv1_Layer);
            }
        }
    
        public List<v1_Layer> GetLayerList() {
            // TODO Auto-generated method stub
            return this.m_LayerList;
        }
    
        public boolean CheckLayerValid(String paramString) {
            // TODO Auto-generated method stub
            if(GetLayerByID(paramString) == null)
            {
                Tools.ShowMessageBox(PubVar.m_DoEvent.m_Context, "请选择有效的数据图层!");
                return false;
            }
            return true;
        }
        
        public List<v1_Layer> CopyLayerList()
        {
            ArrayList localArrayList = new ArrayList();
            Iterator localIterator = this.m_LayerList.iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return localArrayList;
                }
                localArrayList.add(((v1_Layer)localIterator.next()).Clone());
            }
        }
    
        public v1_Layer GetLayerByID(String paramString) {
            // TODO Auto-generated method stub
            Iterator localIterator = this.m_LayerList.iterator();
            v1_Layer localv1_Layer = null;
            do
            {
                if(!localIterator.hasNext()){
                    return null;
                }
                localv1_Layer = (v1_Layer)localIterator.next();
            }while(!localv1_Layer.GetLayerID().equals(paramString));
            return null;
        }
    
        public String GetLayerIDByName(String paramString) {
            // TODO Auto-generated method stub
            Iterator localIterator = this.m_LayerList.iterator();
            v1_Layer localv1_Layer = null;
            do
            {
                if(!localIterator.hasNext()){
                    return "";
                }
                localv1_Layer = (v1_Layer)localIterator.next();
            }while(!localv1_Layer.GetLayerName().equals(paramString));
            return localv1_Layer.GetLayerID();
        }
    
    }
    View Code

    v1_BKLayerExplorer背景图层管理

    public class v1_BKLayerExplorer {
        private String m_BKLayerFileName = "无底图";
        private List<v1_Layer> m_LayerList = new ArrayList();
        private v1_ProjectDB m_ProjectDB = null;
        private boolean m_Visible = true;
        
        private void ClearBKLayer()
        {
            this.m_LayerList.clear();
            PubVar.m_Map.getBKGeoLayers().ClearSelection();
            if(PubVar.m_Workspace.GetDataSourceByUnEditing() != null){ //Workspace.GetDataSourceByUnEditing()
                PubVar.m_Workspace.GetDataSourceByUnEditing().getDatasets().clear();
            }
            PubVar.m_Map.getGridLayer().SetGridDataFile("");
        }
        
        private void LoadLayerForBKDataSource(DataSource paramDataSource)
        {
            this.m_LayerList.clear();
            SQLiteDataReader paramDataSource2 = paramDataSource.Query("select * from T_Layer order by SortID");
            if(paramDataSource2 == null){
                return;
            }
            while(paramDataSource2.Read())
            {
                v1_Layer localv1_Layer = new v1_Layer();
                localv1_Layer.SetLayerID(paramDataSource2.GetString("ID"));
                localv1_Layer.SetLayerName(paramDataSource2.GetString("Name"));
                localv1_Layer.SetLayerTypeName(paramDataSource2.GetString("Type"));
                localv1_Layer.SetVisible(Boolean.parseBoolean(paramDataSource2.GetString("Visible")));
                localv1_Layer.SetSymbolName(paramDataSource2.GetString("Symbol"));
                localv1_Layer.SetLabelField(paramDataSource2.GetString("LabelField"));
                localv1_Layer.SetLabelFont(paramDataSource2.GetString("LabelFont"));
                localv1_Layer.SetFieldList(paramDataSource2.GetString("FieldList"));
                this.m_LayerList.add(localv1_Layer);
            }
            paramDataSource2.Close();
        }
        
        public String GetBKLayerFileName()
        {
            return this.m_BKLayerFileName;
        }
        
        public boolean GetBKLayerVisible()
        {
            return this.m_Visible;
        }
        
        
    
        public void SetBindProjectDB(v1_ProjectDB paramv1_ProjectDB) {
            // TODO Auto-generated method stub
            this.m_ProjectDB = paramv1_ProjectDB;
            
        } //背景图层
    
        public void LoadBKLayer() {
            // TODO Auto-generated method stub
            this.m_BKLayerFileName = "无底图";
            SQLiteDataReader localSQLiteDataReader = this.m_ProjectDB.GetSQLiteDatabase().Query("select * from T_BKLayer");
            if(localSQLiteDataReader == null){
                return;
            }
            while(localSQLiteDataReader.Read()){
                this.m_BKLayerFileName = localSQLiteDataReader.GetString("Name");
            }
            localSQLiteDataReader.Close();
        }
    
        public void OpenBKDataSource() {
            // TODO Auto-generated method stub
            if(PubVar.m_Workspace.OpenBKDataSource(PubVar.m_SysAbsolutePath + "/Map/" + GetBKLayerFileName())){
                LoadLayerForBKDataSource(PubVar.m_Workspace.GetDataSourceByUnEditing());
            }
        }
    
        public List<v1_Layer> GetLayerList() {
            // TODO Auto-generated method stub
            return this.m_LayerList;
        }
    
        public boolean SaveBKLayer(String paramString)
        {
            if(this.m_BKLayerFileName.equals(paramString)){
                return true;
            }
            if(this.m_ProjectDB.GetSQLiteDatabase().ExecuteSQL("delete from T_BKLayer"))
            {
                String str = "insert into T_BKLayer (Name) values ('" + paramString + "')";
                if(this.m_ProjectDB.GetSQLiteDatabase().ExecuteSQL(str))
                {
                    this.m_BKLayerFileName = paramString;
                    if(this.m_BKLayerFileName.equals("无底图"))
                    {
                        ClearBKLayer();
                        return true;
                    }
                    OpenBKDataSource();
                    return true;
                }
            }
            return false;
        }
        
        public void SetBKLayerVisible(boolean paramBoolean)
        {
            this.m_Visible = paramBoolean;
            int i = 0;
            if(this.m_ProjectDB.GetProjectExplorer().GetCoorSystem().GetName().equals("WGS-84坐标"))
            {
                PubVar.m_Map.getOverMapLayer().SetShowGrid(paramBoolean);
                i = 0;
            }
            for(;;)
            {
                if(i >= this.m_LayerList.size())
                {
                    PubVar.m_Map.getGridLayer().SetShowGrid(paramBoolean);
                    break;
                    //return;
                }
                v1_Layer localv1_Layer = (v1_Layer)this.m_LayerList.get(i);
                PubVar.m_Map.getBKGeoLayers().GetLayerByName(localv1_Layer.GetLayerID()).setVisible(this.m_Visible);
                i += 1;
            }
        }
        
        
    }
    View Code

     DoEvent_Project.java中的“工程_打开”代码

                    Object localObject2 = null;
                    Object localObject3 = null;
                    Object localObject1 = null;
                    if(paramString.equals("工程_打开"))
                    {
                      localObject2 = PubVar.m_DoEvent.m_ProjectDB.GetBKLayerExplorer();
                      localObject3 = PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer();
                      localObject1 = PubVar.m_DoEvent.m_ProjectDB.GetLayerRenderExplorer();
                      Object localObject4 = PubVar.m_DoEvent.m_ProjectDB.GetProjectExplorer();
                      Workspace localWorkspace = new Workspace();
                      PubVar.m_Workspace = localWorkspace;
                    }

    v1_LayerRenderExplorer.java 图层渲染类

        public class v1_LayerRenderExplorer {
        
        private boolean RenderLayer(v1_Layer paramv1_Layer, lkEditMode paramlkEditMode)
        {
            if(paramlkEditMode == lkEditMode.enNew)
            {
                Object localObject = PubVar.m_Workspace.GetDataSourceByEditing();
                Dataset localDataset = new Dataset((DataSource)localObject);
                localDataset.setName(paramv1_Layer.GetLayerID());
                localDataset.setType(paramv1_Layer.GetLayerType());
                ((DataSource)localObject).getDatasets().add(localDataset);
                localObject = new GeoLayer(PubVar.m_Map);
                ((GeoLayer)localObject).setDataset(localDataset);
                ((GeoLayer)localObject).setName(localDataset.getName());
                ((GeoLayer)localObject).setType(localDataset.getType());
                localDataset.setBindGeoLayer((GeoLayer)localObject);
                PubVar.m_Map.getGeoLayers().AddLayer((GeoLayer)localObject);
                RenderLayer(paramv1_Layer, lkEditMode.enEdit);
            }
            if(paramlkEditMode == lkEditMode.enEdit){
                RenderLayerForGeoLayer(PubVar.m_Map.getGeoLayers().GetLayerByName(paramv1_Layer.GetLayerID()), paramv1_Layer);
            }
            return true;
        }
        
        private void RenderLayerForGeoLayer(GeoLayer paramGeoLayer, v1_Layer paramv1_Layer)
        {
            paramGeoLayer.setVisible(paramv1_Layer.GetVisible());
            if(paramGeoLayer.getRender() == null){
                paramGeoLayer.setRender(new SimpleRender(paramGeoLayer));
            }
            paramGeoLayer.getRender().setIfLabel(paramv1_Layer.GetIfLabel());
            paramGeoLayer.getRender().setLabelField(paramv1_Layer.GetLabelDataField());
            paramGeoLayer.getRender().setLabelFont(paramv1_Layer.GetLabelFont());
            ((SimpleRender)paramGeoLayer.getRender()).setSymbolName(paramv1_Layer.GetSymbolName());
            ((SimpleRender)paramGeoLayer.getRender()).SetSymbolTransparent(paramv1_Layer.GetTransparet());
            paramGeoLayer.getRender().LoadSymbol();
            int i = 0;
            for(;;)
            {
                if(i >= paramGeoLayer.getDataset().getRecordCount()){
                    return;
                }
                Geometry paramv1_Layer2 = paramGeoLayer.getDataset().GetGeometry(i);
                paramGeoLayer.getRender().UpdateSymbol(paramv1_Layer2);
                i += 1;
            }
        }
    
        public boolean RenderLayerForAdd(v1_Layer paramv1_Layer) {
            // TODO Auto-generated method stub
            return RenderLayer(paramv1_Layer, lkEditMode.enNew);
        }
        
        public boolean RenderLayerForUpdate(v1_Layer paramv1_Layer)
        {
            return RenderLayer(paramv1_Layer, lkEditMode.enEdit);
        }
        
        public void RenderLayerForUpdateAllLabel(v1_Layer paramv1_Layer)
        {
            Object localObject = PubVar.m_Workspace.GetDataSourceByEditing();
            Dataset localDataset = ((DataSource)localObject).GetDatasetByName(paramv1_Layer.GetLayerID());
            localObject = ((DataSource)localObject).Query("select SYS_ID," + paramv1_Layer.GetLabelDataField() + " from " +
            paramv1_Layer.GetLayerID());
            if(localObject == null){
                return;
            }
            while(((SQLiteDataReader)localObject).Read())
            {
                String str1 = ((SQLiteDataReader)localObject).GetString("SYS_ID");
                String str2 = ((SQLiteDataReader)localObject).GetString(paramv1_Layer.GetLabelDataField());
                localDataset.GetGeometryFromDIndex(Integer.parseInt(str1)).setTag(str2);
            }
            ((SQLiteDataReader)localObject).Close();
        }
    
        public boolean RenderBKLayerForAdd(v1_Layer paramv1_Layer) {
            // TODO Auto-generated method stub
            Dataset localDataset = PubVar.m_Workspace.GetDataSourceByUnEditing().GetDatasetByName(paramv1_Layer.GetLayerID());
            GeoLayer localGeoLayer = new GeoLayer(PubVar.m_Map);
            localGeoLayer.setDataset(localDataset);
            localGeoLayer.setName(localDataset.getName());
            localGeoLayer.setType(localDataset.getType());
            localDataset.setBindGeoLayer(localGeoLayer);
            PubVar.m_Map.getBKGeoLayers().AddLayer(localGeoLayer);
            RenderLayerForGeoLayer(localGeoLayer, paramv1_Layer);
            return true;
        }
    
    }
    View Code

     Workspace.java 工作空间类

        public class Workspace {
        private List<DataSource> _DataSourceList = new ArrayList();
        
        public boolean CloseDataSource(DataSource paramDataSource, boolean paramBoolean)
        {
            paramDataSource.Dispose();
            getDataSourceList().remove(paramDataSource);
            return true;
        }
    
        public void FreeWorkspace() {
            // TODO Auto-generated method stub
            Iterator localIterator = this._DataSourceList.iterator();
            for(;;)
            {
                if(!localIterator.hasNext())
                {
                    this._DataSourceList.clear();
                    return;
                }
                ((DataSource)localIterator.next()).Dispose();
            }
        }
    
        public DataSource GetDataSourceByEditing() {
            // TODO Auto-generated method stub
            Iterator localIterator = getDataSourceList().iterator();
            DataSource localDataSource;
            do
            {
                if(!localIterator.hasNext()){
                    return null;
                }
                localDataSource = (DataSource)localIterator.next();
            }while(!localDataSource.getEditing());
            return localDataSource;
        }
    
        public DataSource GetDataSourceByName(String paramString)
        {
            Iterator localIterator = getDataSourceList().iterator();
            DataSource localDataSource;
            int k;
            int i;
            do
            {
                if(!localIterator.hasNext()){
                    return null;
                }
                localDataSource = (DataSource)localIterator.next();
                k = localDataSource.getName().lastIndexOf("/");
                int j = localDataSource.getName().lastIndexOf(".");
                i = j;
                if(j == -1){
                    i = localDataSource.getName().length();
                }
            }while(!localDataSource.getName().substring(k+1, i).equals(paramString));
            return localDataSource;
        }
        
        public DataSource GetDataSourceByUnEditing()
        {
            Iterator localIterator = getDataSourceList().iterator();
            DataSource localDataSource;
            do
            {
                if(!localIterator.hasNext()){
                    return null;
                }
                localDataSource = (DataSource)localIterator.next();
            }while(localDataSource.getEditing());
            return localDataSource;
        }
        
        public boolean OpenBKDataSource(String paramString)
        {
            boolean bool = false;
            DataSource paramString2;
            String str = paramString.substring(paramString.length() - 3, paramString.length()).toUpperCase();
            if(Tools.ExistFile(paramString)){
                if(str.equals("DBX"))
                {
                    paramString2 = new DataSource(paramString);
                    paramString2.setEditing(false);
                    if(paramString2.OpenDatasetsIndex()){
                        this._DataSourceList.add(paramString2);
                    }
                    bool = true;
                }
            }
            if(str.equals("IMX"))
            {
                PubVar.m_Map.getGridLayer().SetGridDataFile(paramString);
                return false;
            }
            if(paramString.indexOf("天地图街区图") >= 0)
            {
                PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enTianditu_Street);
                return true;
            }
            if(paramString.indexOf("Google卫星影像图")>=0){
                PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Satellite);
                return true;
            }
            if(paramString.indexOf("Google地形图")>=0){
                PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Terrain);
                return true;
            }
            if(paramString.indexOf("Google街区图")>=0){
                PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Street);
                return true;
            }
            if(paramString.indexOf("天地图卫星影像图")>=0){
                PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enTianditu_Satellite);
                return true;
            }
            return false;
            /*
            do
            {
                if(str.equals("IMX"))
                {
                    PubVar.m_Map.getGridLayer().SetGridDataFile(paramString);
                    return false;
                }
                if(paramString.indexOf("Google卫星影像图")>=0){
                    PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Satellite);
                }
                if(paramString.indexOf("Google地形图")>=0){
                    PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Terrain);
                }
                if(paramString.indexOf("Google街区图")>=0){
                    PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enGoogle_Street);
                }
                if(paramString.indexOf("天地图卫星影像图")>=0){
                    PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enTianditu_Satellite);
                }
                return bool;
            }while(paramString.indexOf("天地图街区图") < 0);
            PubVar.m_Map.getOverMapLayer().SetOverMapType(lkOverMapType.enTianditu_Street);
            return false;
            */
        }
        
        public boolean OpenEditDataSource(String paramString)
        {
            DataSource paramString2 = new DataSource(paramString);
            Coordinate localCoordinate1 = StaticObject.soProjectSystem.WGS84ToXY(73.0D, 53.0D, 0.0D);
            Coordinate localCoordinate2 = StaticObject.soProjectSystem.WGS84ToXY(135.0D, 3.0D, 0.0D);
            MapCellIndex localMapCellIndex = new MapCellIndex();
            localMapCellIndex.SetCellExtend(localCoordinate1, localCoordinate2);
            StaticObject.soMapCellIndex = localMapCellIndex;
            paramString2.SetMapCellIndex(localMapCellIndex);
            paramString2.setEditing(true);
            this._DataSourceList.add(paramString2);
            return true;
        }
        
        public boolean Save()
        {
            Iterator localIterator = getDataSourceList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return true;
                }
                DataSource localDataSource = (DataSource)localIterator.next();
                if(localDataSource.getEditing()){
                    localDataSource.Save();
                }
            }
        }
        
        public void SetCoorSystemInfo(CoorSystem paramCoorSystem)
        {
            StaticObject.soProjectSystem.SetCoorSystem(paramCoorSystem);
        }
        
        public List<DataSource> getDataSourceList()
        {
            return this._DataSourceList;
        }
    }
    View Code

     DataSource.java 数据源类

    public class DataSource {
      private List<Dataset> _DataSets = new ArrayList();
      public ASQLiteDatabase _EDatabase = null;
      private boolean _Editing = false;
      private String _Name = "";
      private MapCellIndex m_MapCellIndex = null;
      
      public DataSource(String paramString)
      {
          setName(paramString); //名字即TAData.dbx数据库的文件全名
          Open();
          this.m_MapCellIndex = new MapCellIndex(); //地图细胞索引
      }
      
      public boolean Close()
      {
          this._EDatabase.Close();
          return true;
      }
      
      public boolean CreateDataset(String paramString)
      {
          ArrayList localArrayList = new ArrayList();
          localArrayList.add("CREATE TABLE "+ paramString + " (");
          localArrayList.add("SYS_ID integer primary key autoincrement not null default (0),");
          localArrayList.add("SYS_GEO Blob,");
          localArrayList.add("SYS_STATUS int,");
          localArrayList.add("SYS_TYPE varchar(50),");
          localArrayList.add("SYS_OID varchar(50),");
          localArrayList.add("SYS_LABEL varchar(50),");
          localArrayList.add("SYS_DATE varchar(50),");
          localArrayList.add("SYS_PHOTO Text,");
          int i = 1;
          for(;;)
          {
              if(i > 50)
              {
                  paramString = (String)localArrayList.get(localArrayList.size() - 1);
                  localArrayList.remove(localArrayList.size() - 1);
                  localArrayList.add(paramString.substring(0, paramString.length() - 1));
                  localArrayList.add(")");
                  return ExcuteSQL(Tools.JoinT("
    ", localArrayList));
              }
              localArrayList.add(new StringBuilder("F").append(i).toString() + " " + "varchar(255)" + ",");
              i += 1;
          }
      }
      
      public void Dispose()
      {
          Iterator localIterator = this._DataSets.iterator();
          for(;;)
          {
              if(!localIterator.hasNext())
              {
                  this._EDatabase.Close();
                  this._EDatabase = null;
                  return;
              }
              ((Dataset)localIterator.next()).Dispose();
          }
      }
      
      public boolean ExcuteSQL(String paramString)
      {
          return this._EDatabase.ExecuteSQL(paramString);
      }
      
      public boolean ExcuteSQL(String paramString, Object[] paramArrayOfObject)
      {
          return this._EDatabase.ExecuteSQL(paramString, paramArrayOfObject);
      }
      
      public Dataset GetDatasetByName(String paramString)
      {
          Iterator localIterator = getDatasets().iterator();
          Dataset localDataset = null;
          //if()
          do
          {
              Object localObject;
              if(!localIterator.hasNext()){
                  localObject = null;
                  return localDataset;
              }
              localDataset = (Dataset)localIterator.next();
              if(localDataset.getName().toUpperCase().equals(paramString.toUpperCase()))
              {
                  localObject = localDataset;
                  return localDataset;
              }
              /*
              do
              {
                  localDataset = (Dataset)localIterator.next();
                  localObject = localDataset;
                  return (Dataset)localObject;
              }while(localDataset.getName().toUpperCase().equals(paramString.toUpperCase()));
              */
          }while(!localDataset.getShortName().toUpperCase().equals(paramString.toUpperCase()));
          return localDataset;
      }
      
      public String GetFullDatasetName(String paramString)
      {
          Iterator localIterator = getDatasets().iterator();
          for(;;)
          {
              if(!localIterator.hasNext()){
                  return "";
              }
              Dataset localDataset = (Dataset)localIterator.next();
              if(localDataset.getShortName() == paramString){
                  switch(localDataset.getType())
                  {
                  case enPoint:
                      return paramString + "1";
                  case enPolyline:
                      return paramString + "2";
                  case enPolygon:
                      return paramString + "3";
                  }
              }
          }
      }
      
      public MapCellIndex GetMapCellIndex()
      {
          return this.m_MapCellIndex;
      }
      
      public ASQLiteDatabase GetSQLiteDatabase()
      {
          return this._EDatabase;
      }
      
      public List<FieldInfo> GetTableStruct(String paramString)
      {
          ArrayList localArrayList = new ArrayList();
          SQLiteDataReader paramString2 = Query("select * from TableStruct where TableName='" + paramString + "'");
          if(paramString2 != null){}
          for(;;)
          {
              if(!paramString2.Read()){
                  return localArrayList;
              }
              FieldInfo localFieldInfo = new FieldInfo();
              localFieldInfo.setName(paramString2.GetString("FieldName"));
              localFieldInfo.setCaption(paramString2.GetString("FieldCaption"));
              localArrayList.add(localFieldInfo);
          }
      }
      
      public boolean Open()
      {
          this._EDatabase = new ASQLiteDatabase();
          this._EDatabase.setDatabaseName(getName());
          return true;
      }
      
      public boolean OpenDatasets()
      {
          Object localObject1 = new ArrayList();
          Object localObject2 = this._EDatabase.Query("select name from sqlite_master where type='table' "
                 + "and substr(name,length(name),1) in ('0','1','2') order by substr(name,length(name),1) desc");
          if(!((SQLiteDataReader)localObject2).Read())
          {
              ((SQLiteDataReader)localObject2).Close();
              localObject1 = ((List)localObject1).iterator();
          }
          
          for(;;)
          {
              if(!((Iterator)localObject1).hasNext())
              {
                  ((List)localObject1).add(((SQLiteDataReader)localObject2).GetString(0)); //获取第0个
                  return true;
                  //break;
              }
              localObject2 = (String)((Iterator)localObject1).next();
              Object localObject3 = "update " + (String)localObject2 + " set SYS_STATUS = 0";
              if(this._EDatabase.ExecuteSQL((String)localObject3))
              {
                  localObject3 = new Dataset(this);
                  getDatasets().add((Dataset)localObject3);
                  ((Dataset)localObject3).setName((String)localObject2);
                  localObject2 = ((String)localObject2).substring(((String)localObject2).length() - 1, ((String)localObject2).length());
                  if (((String)localObject2).equals("0")) {
                      ((Dataset)localObject3).setType(lkGeoLayerType.enPoint);
                  }
                  if (((String)localObject2).equals("1")) {
                      ((Dataset)localObject3).setType(lkGeoLayerType.enPolyline);
                  }
                  if (((String)localObject2).equals("2")) {
                      ((Dataset)localObject3).setType(lkGeoLayerType.enPolygon);
                  }
              }
          }
      }
      
      public boolean OpenDatasetsIndex()
      {
          Object localObject = this._EDatabase.Query("select LT_JD,LT_WD,RB_JD,RB_WD from TableExtend");
          for(;;)
          {
              if(!((SQLiteDataReader)localObject).Read())
              {
                  ((SQLiteDataReader)localObject).Close();
                  localObject = getName().substring(0, getName().lastIndexOf(".")) + ".idx";
                  new LoadMapFileMT(this).ReadIndexData((String)localObject);
                  return true;
              }
              double d1 = Double.valueOf(((SQLiteDataReader)localObject).GetString("LT_JD")).doubleValue();
              double d2 = Double.valueOf(((SQLiteDataReader)localObject).GetString("LT_WD")).doubleValue();
              double d3 = Double.valueOf(((SQLiteDataReader)localObject).GetString("RB_JD")).doubleValue();
              double d4 = Double.valueOf(((SQLiteDataReader)localObject).GetString("RB_WD")).doubleValue();
              this.m_MapCellIndex.SetCellExtend(new Coordinate(d1, d2), new Coordinate(d3, d4));
          }
      }
      
      public SQLiteDataReader Query(String paramString)
      {
          return this._EDatabase.Query(paramString);
      }
      
      public boolean RemoveDataset(String paramString)
      {
          return ExcuteSQL("drop table " + paramString);
      }
      
      public boolean Save()
      {
          new ArrayList();
          Iterator localIterator = getDatasets().iterator();
          if(!localIterator.hasNext()){
              return true;
          }
          Dataset localDataset = (Dataset)localIterator.next();
          if(ExcuteSQL(String.format("delete from %1$s where SYS_STATUS=1 or SYS_GEO is null", new Object[]{localDataset.getName()}))){
              localDataset.Purge();
          }
          int i = 0;
          Geometry localGeometry = null;
          if(i < localDataset.getRecordCount())
          {
              localGeometry = localDataset.GetGeometry(i);
              if(localGeometry.GetEdited())
              {
                  if(UpdateGeometry(Tools.GeometryToByte(localGeometry.GetAllCoordinateList()), localDataset.getShortName(), i+1)){
                      //break;
                  }
                  Tools.ShowMessageBox("保存采集数据失败!");
              }
          }
          for(;;)
          {
              i += 1;
              localGeometry.SetEdited(false);
              break;
          }
        return true;
      }
      
      public void SetMapCellIndex(MapCellIndex paramMapCellIndex)
      {
          this.m_MapCellIndex = paramMapCellIndex;
      }
      
      public boolean UpdateGeometry(byte[] paramArrayOfByte, String paramString, int paramInt)
      {
          try
          {
              paramString = "update " + paramString + " set SYS_GEO=? where SYS_ID=" + paramInt;
              this._EDatabase.ExecuteSQL(paramString, new Object[]{paramArrayOfByte});
              return true;
          }
          catch(Error paramArrayOfByte1)
          {
              Tools.ShowMessageBox("采集图形数据更新失败!" + paramArrayOfByte1.getMessage());
          }
          return false;
      }
      
      public List<Dataset> getDatasets()
      {
          return this._DataSets;
      }
      
      public boolean getEdited()
      {
          Iterator localIterator = getDatasets().iterator();
          do
          {
              if(!localIterator.hasNext()){
                  return false;
              }
          }while(!((Dataset)localIterator.next()).getEdited());
          return true;
      }
      
      public boolean getEditing()
      {
          return this._Editing;
      }
      
      public String getName()
      {
          return this._Name;
      }
      
      public void setEditing(boolean paramBoolean)
      {
          this._Editing = paramBoolean;
      }
      
      public void setName(String paramString)
      {
          this._Name = paramString;
      }
    }
    View Code

    ASQLiteDatabase.java 一SQLite数据库类

    public class ASQLiteDatabase {
        private String _DatabaseName = "";
        private SQLiteDatabase _SQLiteDatabase = null;
        
        public void Close()
        {
            this._SQLiteDatabase.close();
        }
        
        public boolean ExecuteSQL(String paramString)
        {
            try{
                this._SQLiteDatabase.execSQL(paramString);
                return true;
            }
            catch(SQLiteException paramString2){}
            return false;
        }
        
        public boolean ExecuteSQL(String paramString, Object[] paramArrayOfObject)
        {
            try
            {
                this._SQLiteDatabase.execSQL(paramString, paramArrayOfObject);
                return true;
            }catch(SQLiteException paramString2){}
            return false;
        }
        
        public SQLiteDataReader Query(String paramString)
        {
            Log.d("ASQLiteDatabase", "Query");
            return new SQLiteDataReader(this._SQLiteDatabase.rawQuery(paramString, null));
        }
    
        public void setDatabaseName(String paramString) {
            // TODO Auto-generated method stub
            try{
                this._DatabaseName = paramString;
                Log.d("ASQLiteDatabase", "setDatabaseName(paramString):" + this._DatabaseName);
                this._SQLiteDatabase = SQLiteDatabase.openDatabase(this._DatabaseName, null, SQLiteDatabase.CREATE_IF_NECESSARY); //SQLiteDatabase.CREATE_IF_NECESSARY
                Log.d("ASQLiteDatabase", "Try Open SQLiteDatabase");
                return;
            }catch(SQLiteException paramString2){
                paramString2.getMessage();
            }
        }
    
    }
    View Code

    MapControl.java 地图控件类 (MapControl类继承自ImageView,在MainActivity.java中便将MapControl对象添加到RelativeLayout中

    public class MapControl extends ImageView {
        boolean FirstLoad = true;
        public Envelope TrackingRectangle;
        private Tools _Activetool;
        private ICommand _ICommand; //命令接口
        private IOnPaint _IOnPaint; //绘图接口
        public IOnPaint _GPSMapPaint;
        private Map _Map;
        private MoveObject _MoveObject = null;
        public Pan _Pan;
        public Select _Select;
        private Vertex _Vertex = null;
        private ZoomIn _ZoomIn;
        private ZoomInOutPan _ZoomInOutPan;
        private ZoomOut _ZoomOut;
        public ICommand m_BeforeCommand;
        public IOnPaint m_BeforeIOnPaint;
        public MapTools m_BeforeTool;
    
        public MapControl(Context paramContext)
        {
            super(paramContext);
            InitMapControl(); //初始化地图控件
        }
        
        private void MapControl_MouseDown(MotionEvent paramMotionEvent)
        {
            if((this._Map == null)||(this._Activetool == Tools.None)){}
            while(this._ICommand == null){
                return;
            }
            this._ICommand.MouseDown(paramMotionEvent);
        }
        
        private void MapControl_MouseMove(MotionEvent paramMotionEvent)
        {
            if((this._Map == null)||(this._Activetool == Tools.None)){}
            while(this._ICommand == null){
                return;
            }
            this._ICommand.MouseMove(paramMotionEvent);
        }
        
        private void MapControl_MouseUp(MotionEvent paramMotionEvent)
        {
            if((this._Map == null)||(this._Activetool == Tools.None)){}
            while(this._ICommand == null){
                return;
            }
            this._ICommand.MouseUp(paramMotionEvent);
        }
        
        private void SetZoomInOut(float paramFloat)
        {
            this._Map.setExtend(this._Map.getExtend().Scale(paramFloat));
            this._Map.Refresh();
        }
    
        private void InitMapControl() { //初始化地图控件
            // TODO Auto-generated method stub
            this._ZoomIn = new ZoomIn(this);  //放大
            this._ZoomOut = new ZoomOut(this);  //缩小
            this._ZoomInOutPan = new ZoomInOutPan(this);  //缩放平移
            this._Pan = new Pan(this);  //平移
            this._Select = new Select(this, true);  //选择
            this._MoveObject = new MoveObject(this);  //移动实体
            this._Vertex = new Vertex(this);  //节点
            setActiveTool(Tools.None);  //设置当前工具
        }
        
        public void SetCommand(ICommand paramICommand)
        {
            this._ICommand = paramICommand;
        }
        
        public void SetOnPaint(IOnPaint paramIOnPaint)
        {
            this._IOnPaint = paramIOnPaint;
        }
        
        public void SetZoomIn()
        {
            SetZoomInOut(0.5F);
        }
        
        public void SetZoomOut()
        {
            SetZoomInOut(2.0F);
        }
        
        public Tools getActiveTool()
        {
            return this._Activetool;
        }
        
        protected void onDraw(Canvas paramCanvas)
        {
            if(this.FirstLoad){
                this.FirstLoad = false;
            }
            super.onDraw(paramCanvas);
            if(this._IOnPaint != null){
                this._IOnPaint.OnPaint(paramCanvas);
            }
            if(this._GPSMapPaint != null){
                this._GPSMapPaint.OnPaint(paramCanvas);
            }
        }
        
        public boolean onTouchEvent(MotionEvent paramMotionEvent)
        {
            paramMotionEvent.getActionMasked();
            paramMotionEvent.getPointerCount();
            switch(paramMotionEvent.getAction() & 0xFF)
            {
            case 1:
                paramMotionEvent.getPointerCount();
                return true;
            case 2:
                MapControl_MouseDown(paramMotionEvent);
                return true;
            case 3:
                MapControl_MouseUp(paramMotionEvent);
                return true;
            case 4:
                MapControl_MouseMove(paramMotionEvent);
                return true;
            default:
                if(this._Activetool == Tools.ZoomInOutPan)
                {
                    MapControl_MouseDown(paramMotionEvent);
                    return true;
                }
                else if(this._Activetool == Tools.ZoomInOutPan)
                {
                    MapControl_MouseUp(paramMotionEvent);
                }
            }
            return false;
            
        }
    
        public void setActiveTool(Tools paramTools) { //设置动态工具
            // TODO Auto-generated method stub
            if((paramTools != Tools.FullScreen)&&(paramTools != Tools.FullScreenSize)){
                this._Activetool = paramTools;
            }
            switch(paramTools)
            {
            case EditLine: //如果设置工具为编辑线
                this._ICommand = null;
                return;
            case FullScreenSize: //如果设置工具为全屏尺寸
                this._ICommand = this._ZoomInOutPan;
                this._IOnPaint = this._ZoomInOutPan;
                return;
            case InsertVertex: //如果设置工具为插入节点
                this._ICommand = this._ZoomIn;
                this._IOnPaint = this._ZoomIn;
                return;
            case MeasureLength: //如果设置工具为丈量长度
                this._ICommand = this._ZoomOut;
                this._IOnPaint = this._ZoomIn;
                return;
            case Merge2: //如果设置工具为融合
                this._ICommand = this._Pan;
                this._IOnPaint = this._Pan;
                return;
            case None: //如果为None
                default:
                case FullScreen:
                case AddPolygon:
                case AddPolyline:
                case AddVertex:
                case AddPoint:
                case DelVertexInBox:
                case DelVertex:
                    if(getMap() == null){
                    if(this._Map == null)
                        return;
                    int i = getWidth();
                    int j = getHeight();
                    if((i != this._Map.getSize().getWidth())||(j != this._Map.getSize().getHeight())){
                        this._Map.setSize(new Size(i, j));
                    }
                    this._Map.setExtend(this._Map.getFullExtendForView());
                    this._ICommand = null;
                    setActiveTool(Tools.FullScreenSize);
                    return;
                };
                this._Map.Refresh();
                return;
            case CallMile:
                this._ICommand = this._Select;
                  return;
            case Pan: //平移
                  this._ICommand = this._MoveObject;
                  this._IOnPaint = this._MoveObject;
                  return;
            case Merge1: 
                  this._ICommand = this._Vertex;
                  this._IOnPaint = this._Vertex;
                  this._Vertex.SetVertexEditType(lkVertexEditType.enMove);
                  return;
            case MoveObject: 
                  this._ICommand = this._Vertex;
                  this._IOnPaint = this._Vertex;
                  this._Vertex.SetVertexEditType(lkVertexEditType.enAdd);
                  return;
            case MoveVertex: 
                  this._ICommand = this._Vertex;
                  this._IOnPaint = this._Vertex;
                  this._Vertex.SetVertexEditType(lkVertexEditType.enDelete);
                  return;
            }
        }
        
        public void setActiveTools(Tools paramTools, IOnPaint paramIOnPaint, ICommand paramICommand)
        {
            setActiveTool(paramTools);
            this._ICommand = paramICommand;
            this._IOnPaint = paramIOnPaint;
        }
    
        public Map getMap() {
            // TODO Auto-generated method stub
            return this._Map;
        }
    
        public void setMap(Map paramMap) {
            // TODO Auto-generated method stub
            this._Map = paramMap;
        }
    
    }
    View Code

     Map.java 地图类

    public class Map {
        boolean LoadGoogleMap = false;
        public Bitmap MaskBitmap = null;
        private GeoLayers _BKGeoLayers = new GeoLayers();
        private ImageView _DrawPicture;
        private Envelope _ExtendForView = null;
        private GeoLayers _GeoLayers = new GeoLayers();
        private Canvas _Graphics;
        private GridLayer _GridLayer = new GridLayer(this);
        private boolean _InvalidMap = false;
        private OverLayer _OverLayer = new OverLayer();
        private OverMap _OverMapLayer = new OverMap(this);
        private v1_ScaleBar _ScaleBar = null;
        private String _SystemPath = "";
        private ViewConvert _ViewConvert = new ViewConvert();
        public Bitmap bp = null;
    
        public Map(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this._DrawPicture = paramMapControl;
            setSize(new Size(240, 240));
            setFullExtend(StaticObject.soMapCellIndex.GetCellExtend());
            paramMapControl.setMap(this);
        }
    
    
        public void Dispose() {
            // TODO Auto-generated method stub
            if(this.bp != null){
                this.bp.recycle();
            }
            this.bp = null;
            if(this.MaskBitmap != null){
                this.MaskBitmap.recycle();
            }
            this.MaskBitmap = null;
            this._Graphics = null;
            System.gc();
        }
    
    
        public void ClearSelection() {
            // TODO Auto-generated method stub
            Iterator localIterator = this._GeoLayers.getList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return;
                }
                ((GeoLayer)localIterator.next()).getSelSelection().RemoveAll();
            }
        }
    
        public void FastRefresh() {
            // TODO Auto-generated method stub
            this._Graphics.drawColor(Color.GREEN);
            this._OverMapLayer.FastRefresh();
            this._GridLayer.FastRefresh();
            GeoLayer localGeoLayer;
            Iterator localIterator = this._GeoLayers.getList().iterator();
            if(!localIterator.hasNext())
            {
                localIterator = this._GeoLayers.getList().iterator();
                if(localIterator.hasNext()){
                    //break;
                }
                localIterator = this._GeoLayers.getList().iterator();
                if(localIterator.hasNext()){
                    //break;
                }
                localIterator = this._GeoLayers.getList().iterator();
            }
            for(;;)
            {
                if(!localIterator.hasNext())
                {
                    getOverLayer().Refresh();
                    new Canvas(this.MaskBitmap).drawBitmap(this.bp, 0.0F, 0.0F, null);
                    this._DrawPicture.invalidate();
                    
                    ((GeoLayer)localIterator.next()).FastRefresh();
                    localGeoLayer = (GeoLayer)localIterator.next();
                    if(!localGeoLayer.getRender().getIfLabel()){
                        break;
                    }
                    localGeoLayer.DrawSelectionLabel(localGeoLayer.getShowSelection(), this._Graphics, 0, 0);
                    break;
                    //return;
                }
                localGeoLayer = (GeoLayer)localIterator.next();
                if(localGeoLayer.getRender().getIfLabel()){
                    localGeoLayer.DrawSelectionLabel(localGeoLayer.getSelSelection(), this._Graphics, 0, 0);
                }
            }
        }
    
    
        /*
        public void setExtend(Object fullExtendForView) {
            // TODO Auto-generated method stub
            
        }
        */
    
        public void Refresh() {
            // TODO Auto-generated method stub
            if(this._ScaleBar != null){
                this._ScaleBar.RefreshScalBar(this);
            }
            this._OverMapLayer.Refresh();
            this._GridLayer.Refresh();
            List localList = getMapCellIndex().CalCellIndex(getViewConvert().CalExtend());
            Object localObject1 = null;
            Iterator localIterator = this._GeoLayers.getList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext())
                {
                    FastRefresh();
                    return;
                }
                GeoLayer localGeoLayer = (GeoLayer)localIterator.next();
                if((localGeoLayer.getVisibleScaleMax() >= localGeoLayer.getMap().getViewConvert().getZoom())&&
                        (localGeoLayer.getVisibleScaleMin() <= localGeoLayer.getMap().getViewConvert().getZoom())&&
                        (localGeoLayer.getVisible()))
                {
                    localGeoLayer.getShowSelection().RemoveAll();
                    Object localObject2 = localObject1;
                    if(localObject1 == null)
                    {
                        localObject2 = new ArrayList();
                        localObject1 = localGeoLayer.getDataset().getCellIndex().getCurrentCellIndex().iterator();
                    }
                    for(;;)
                    {
                        if(!((Iterator)localObject1).hasNext())
                        {
                            localGeoLayer.getDataset().SetNewCellIndex(localList, (List)localObject2);
                            localGeoLayer.Refresh();
                            localObject1 = localObject2;
                            break;
                        }
                        int i = ((Integer)((Iterator)localObject1).next()).intValue();
                        if(localList.indexOf(Integer.valueOf(i))<0){
                            ((List)localObject2).add(Integer.valueOf(i));
                        }
                    }
                }
                localGeoLayer.getShowSelection().RemoveAll();
            }
        }
        
        public int SetDPI(float paramFloat)
        {
            return (int)paramFloat;
        }
        
        public int SetDPI(int paramInt)
        {
            return SetDPI(paramInt);
        }
        
        public boolean SetDataSource(DataSource paramDataSource)
        {
            Iterator<Dataset> paramDataSource2 = paramDataSource.getDatasets().iterator();
            for(;;)
            {
                if(!paramDataSource2.hasNext()){
                    return true;
                }
                Dataset localDataset = (Dataset)paramDataSource2.next();
                GeoLayer localGeoLayer = new GeoLayer(this);
                localGeoLayer.setDataset(localDataset);
                localGeoLayer.setName(localDataset.getName());
                localGeoLayer.setType(localDataset.getType());
                this._GeoLayers.AddLayer(localGeoLayer);
            }
        }
        
        public void SetScaleBar(v1_ScaleBar paramv1_ScaleBar)
        {
            this._ScaleBar = paramv1_ScaleBar;
        }
    
        public double ToMapDistance(double paramDouble) {
            // TODO Auto-generated method stub
            return getViewConvert().getZoomScale() * paramDouble;
        }
    
        public Envelope getExtend() {
            // TODO Auto-generated method stub
            return this._ViewConvert.getExtend();
        }
    
        public Canvas getDisplayGraphic() {
            // TODO Auto-generated method stub
            return this._Graphics;
        }
    
        public void UpdateExtendForView(Envelope paramEnvelope) {
            // TODO Auto-generated method stub
            if(this._ExtendForView == null){
                this._ExtendForView = new Envelope(paramEnvelope.getLeftTop().Clone(), paramEnvelope.getRightBottom().Clone());
            }
            this._ExtendForView = this._ExtendForView.MergeEnvelope(paramEnvelope);
        }
    
    
        public GeoLayers getBKGeoLayers()
        {
            return this._BKGeoLayers;
        }
        
        public Coordinate getCenter()
        {
            return this._ViewConvert.getCenter();
        }
        
        public ImageView getDrawPicture()
        {
            return this._DrawPicture;
        }
        
        public Envelope getFullExtend()
        {
            return getViewConvert().getFullExtend();
        }
        
    
        public Envelope getFullExtendForView() {
            // TODO Auto-generated method stub
            Envelope localEnvelope;
            Coordinate localCoordinate = null;
            double d2 = 0;
            double d1 = 0;
            if(this._ExtendForView == null)
            {
                localEnvelope = getGridLayer().GetExtend();
                if(localEnvelope != null)
                {
                    localCoordinate = localEnvelope.getCenter();
                    d2 = localEnvelope.getWidth() * 2.0D;
                    d1 = localEnvelope.getHeight() * 2.0D;
                    if(d2 < d2){
                        //break;
                    }
                    d1 = getViewConvert().getSize().getHeight() * d2 / getViewConvert().getSize().getWidth();
                }
            }
            for(;;)
            {
                localEnvelope = getFullExtend();
                localEnvelope = this._ExtendForView;
                d2 = getViewConvert().getSize().getWidth() * d1/getViewConvert().getSize().getHeight();
                return new Envelope(localCoordinate.getX() - d2/2.0D, localCoordinate.getY() + d1/2.0D, localCoordinate.getX() +
                        d2/2.0D, localCoordinate.getY() - d1/2.0D);
                
            }
            //return null;
        }
        
        public GeoLayers getGeoLayers()
        {
            return this._GeoLayers;
        }
        
        public GridLayer getGridLayer()
        {
            return this._GridLayer;
        }
        
        public boolean getInvalidMap()
        {
            return this._InvalidMap;
        }
        
        public MapCellIndex getMapCellIndex()
        {
            return StaticObject.soMapCellIndex;
        }
        
        public OverLayer getOverLayer()
        {
            return this._OverLayer;
        }
        
        public OverMap getOverMapLayer()
        {
            return this._OverMapLayer;
        }
    
        public Size getSize() {
            // TODO Auto-generated method stub
            return getViewConvert().getSize();
        }
        
        public String getSystemPath()
        {
            return this._SystemPath;
        }
        
        public ViewConvert getViewConvert()
        {
            return this._ViewConvert;
        }
        
        public void setCenter(Coordinate paramCoordinate)
        {
            this._ViewConvert.setCenter(paramCoordinate);
        }
        
        public void setExtend(Envelope paramEnvelope)
        {
            this._ViewConvert.setExtend(paramEnvelope);
        }
        
        public void setFullExtend(Envelope paramEnvelope)
        {
            getViewConvert().setFullExtend(paramEnvelope);
        }
        
        public void setInvalidMap(boolean paramBoolean)
        {
            this._InvalidMap = paramBoolean;
        }
        
    
        public void setSize(Size paramSize) {
            // TODO Auto-generated method stub
            Dispose();
            getViewConvert().setSize(paramSize);
            this.bp = Bitmap.createBitmap(this._ViewConvert.getSize().getWidth(), this._ViewConvert.getSize().getHeight(),
                    Bitmap.Config.ARGB_8888);
            this.MaskBitmap = Bitmap.createBitmap(this.bp, 0, 0, this.bp.getWidth(), this.bp.getHeight());
            this._DrawPicture.setImageBitmap(this.bp);
            this._Graphics = new Canvas(this.bp);
        }
        
    
        public void setSystemPath(String paramString) {
            // TODO Auto-generated method stub
            this._SystemPath = paramString;
        }
    }
    View Code

     v1_ScaleBar.java 比例尺类

    public class v1_ScaleBar {
        private Paint _BKFont = null; //文字体
        private Paint m_LinePen = null; //线笔
        private Paint m_TextPen = null; //文字笔
        private Bitmap m_bp = null; //点图
        private Canvas m_g = null; //画布
        
        private void DrawBar(float paramFloat1, float paramFloat2, String paramString) //绘制栏
        {
            String str2 = String.valueOf(paramFloat2);
            String str1 = str2;
            if(str2.substring(str2.length() - 2, str2.length()).equals(".0")){ //取后两位如果为.0
                str1 = str2.substring(0, str2.length() - 2); //去除后两位
            }
            paramFloat2 = this.m_g.getWidth() * paramFloat2/paramFloat1; //画布宽度*paramFloat2/paramFloat1
            float f = this.m_g.getHeight(); //画布高度
            paramFloat1 = 0.0F;
            int i = 1;
            for(;;)
            {
                if(i>2)
                {
                    str2 = str1 + paramString;
                    paramFloat1 = (paramFloat2 - this.m_TextPen.measureText(str1+paramString))/2.0F;
                    paramFloat2 = this.m_g.getHeight() - 12;
                    this.m_g.drawText(str2, paramFloat1-2.0F, paramFloat2, getBKFont());
                    this.m_g.drawText(str2, 2.0F + paramFloat1, paramFloat2, getBKFont());
                    this.m_g.drawText(str2, paramFloat1, paramFloat2 - 2.0F, getBKFont());
                    this.m_g.drawText(str2, paramFloat1, 2.0F + paramFloat2, getBKFont());
                    this.m_g.drawText(str2, 2.0F + paramFloat1, 2.0F + paramFloat2, getBKFont());
                    this.m_g.drawText(str2, paramFloat1 - 2.0F, paramFloat2 - 2.0F, getBKFont());
                    this.m_g.drawText(str2, 2.0F + paramFloat1, paramFloat2 - 2.0F, getBKFont());
                    this.m_g.drawText(str2, paramFloat1 - 2.0F, 2.0F + paramFloat2, getBKFont());
                    this.m_g.drawText(str2, paramFloat1, paramFloat2, this.m_TextPen);
                    return;
                }
                if(i==1)
                {
                    this.m_LinePen.setColor(Color.CYAN);
                    this.m_LinePen.setStrokeWidth(6.0F);
                    paramFloat1 = 2.0F;
                }
                if(i==2)
                {
                    this.m_LinePen.setColor(Color.BLUE);
                    this.m_LinePen.setStrokeWidth(4.0F);
                }
                this.m_g.drawLine(0.0F, f-5.0F, paramFloat2, f-5.0F, this.m_LinePen);
                this.m_g.drawLine(2.0F, f/2.0F, 2.0F, f, this.m_LinePen);
                this.m_g.drawLine(paramFloat2-paramFloat1, f/2.0F, paramFloat2-paramFloat1, f, this.m_LinePen);
                i+=1;
            }
        }
        
        private Paint getBKFont()
        {
            if(this._BKFont == null)
            {
                this._BKFont = new Paint();
                this._BKFont.setColor(Color.YELLOW);
                this._BKFont.setAntiAlias(true);
                Typeface localTypeface = Typeface.create("宋体", 0);
                this._BKFont.setTypeface(localTypeface);
                this._BKFont.setAntiAlias(true);
            }
            this._BKFont.setTextSize(this.m_TextPen.getTextSize());
            return this._BKFont;
        }
        
        public void RefreshScalBar(Map paramMap)
        {
            String paramMap2 = null;
            this.m_bp.eraseColor(Color.RED);
            String str = "米";
            double d = 1.0D;
            if(paramMap != null){
                d = paramMap.getViewConvert().getZoomScale();
            }
            int j=(int)(this.m_g.getWidth() * d);
            if(j==0)
            {
                float f = (float)Tools.Save3Point(this.m_g.getWidth() * d);
                DrawBar(f,f,"米");
            }
            int i = 0;
            if(str.length() < 4)
            {
                i=j;
                paramMap2 = str;
                if(j >= 1000)
                {
                    i = j/1000;
                    paramMap2 = "公里";
                }
                str = String.valueOf(i);
                if(str.length()==1)
                {
                    DrawBar(i,i,paramMap2);
                    return;
                }
                if(str.length() == 2)
                {
                    j = Integer.parseInt(str.substring(1, 2));
                    str = str.substring(0,1);
                    if(j>=5){}
                    for(str = str+"5";;str=str+"0")
                    {
                        DrawBar(i, Integer.parseInt(str), paramMap2);
                        return;
                    }
                }
                if(str.length()==3)
                {
                    j = Integer.parseInt(str.substring(str.length()-2, str.length()));
                    str = str.substring(0, str.length() - 2);
                    if(j>=50){}
                    for(str=str+"50";;str=str+"00")
                    {
                        DrawBar(i, Integer.parseInt(str), paramMap2);
                        return;
                    }
                }
                return;
            }
            DrawBar(i, Integer.parseInt(str), paramMap2);
        }
    
        public void SetImageView(ImageView paramImageView) {
            // TODO Auto-generated method stub
            Log.d("ScaleBar", "Into ScaleBar");
            this.m_bp = Bitmap.createBitmap(100, 30, Bitmap.Config.ARGB_4444); //初始化Bitmap
            this.m_g = new Canvas(this.m_bp); //为画布赋值
            Log.d("ScaleBar", "set canvas");
            paramImageView.setImageBitmap(this.m_bp); //为ScaleBar赋Bitmap值
            this.m_TextPen = new Paint();
            this.m_TextPen.setColor(Color.BLUE);
            this.m_TextPen.setAntiAlias(true);
            Typeface paramImageView2 = Typeface.create("宋体", Typeface.BOLD);
            this.m_TextPen.setTypeface(paramImageView2);
            this.m_TextPen.setTextSize(16.0F);
            this.m_LinePen = new Paint();
            this.m_LinePen.setColor(Color.BLUE);
            this.m_LinePen.setStyle(Paint.Style.STROKE);
            this.m_LinePen.setAntiAlias(true);
            this.m_LinePen.setStrokeWidth(3.0F);
        }
    
    }
    View Code

    Dataset.java 数据集类

    public class Dataset
    {
      private GeoLayer _BindGeoLayer = null; //地理图层
      private LayerCellIndex _CellIndex  = null; //图层细胞索引
      private DataSource _DataSource = null; //数据源
      private boolean _Edited = false; //是否编辑
      private List<ExtraGeometry> _GeometryList = new ArrayList(); //附加地理数据列
      private String _Name = ""; //名称
      private List<Integer> _PurgeObjectIndexList = new ArrayList(); //清除对象索引列
      private String _ShortName  = ""; //短名称
      private List<FieldInfo> _TableStruct = null; //表结构
      private lkGeoLayerType _Type = lkGeoLayerType.enUnknow; //地理图层类型
    
      
    }

     GeoLayer.java 地理图层类

    public class GeoLayer {
        private Dataset _Dataset = null;
        private String _DisplayFilter = "";
        private boolean _Editable = true;
        private Map _Map = null;
        private String _Name = "";
        private IRender _Render = null;
        private Selection _SelSelection = new Selection();
        private boolean _Selectable = true;
        private Selection _ShowSelection = new Selection();
        private boolean _Snapable = true;
        private lkGeoLayerType _Type = lkGeoLayerType.enUnkown;
        private boolean _Visible = true;
        private double _VisibleScaleMax = 1.7976931348623157E+308D;
        private double _VisibleScaleMin = 0.0D;
        
        public GeoLayer(Map paramMap)
        {
            this._Map = paramMap;
            this._ShowSelection.setType(lkSelectionType.enShow);
            this._SelSelection.setType(lkSelectionType.enSelect);
        }
        
        private void AddIndex(Geometry paramGeometry){}
        
        private void RemoveIndex(Geometry paramGeometry){}
        
        public int AddGeometry(Geometry paramGeometry)
        {
            return AddGeometry(paramGeometry, false);
        }
        
        public int AddGeometry(Geometry paramGeometry, boolean paramBoolean)
        {
            return paramGeometry.getIndex();
        }
        
        public void AddIndex(Geometry paramGeometry, int paramInt){}
        
        public void Dispose()
        {
            this._ShowSelection.RemoveAll();
            this._SelSelection.RemoveAll();
            this._Dataset.Dispose();
        }
        
        public void DrawSelection(Selection paramSelection)
        {
            DrawSelection(paramSelection, this._Map.getDisplayGraphic(), 0, 0);
        }
        
        public void DrawSelection(Selection paramSelection, Canvas paramCanvas, int paramInt1, int paramInt2)
        {
            Iterator localIterator = paramSelection.getGeometryIndexList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return;
                }
                int i = ((Integer)localIterator.next()).intValue();
                Geometry localGeometry = this._Dataset.GetGeometry(i);
                if((localGeometry != null)&&(localGeometry.getStatus() != lkGeometryStatus.enDelete) && ((paramSelection.getType()!=lkSelectionType.enShow)
                        ||(this._SelSelection.getGeometryIndexList().indexOf(Integer.valueOf(i))<0))){
                    if(paramSelection.getType() == lkSelectionType.enShow)
                    {
                        if(localGeometry.getSymbol() == null)
                        {
                            Tools.ShowMessageBox(this._Name);
                            return;
                        }
                        localGeometry.getSymbol().Draw(this._Map, paramCanvas, localGeometry, paramInt1, paramInt2, lkDrawType.enNormal);
                    }
                    else if(paramSelection.getType() == lkSelectionType.enSelect)
                    {
                        localGeometry.getSymbol().Draw(this._Map, paramCanvas, localGeometry, paramInt1, paramInt2, lkDrawType.enSelected_Editing);
                    }
                }
            }
        }
        
        public void DrawSelectionLabel(Selection paramSelection, Canvas paramCanvas, int paramInt1, int paramInt2)
        {
            Iterator localIterator = paramSelection.getGeometryIndexList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return;
                }
                int i = ((Integer)localIterator.next()).intValue();
                Geometry localGeometry = this._Dataset.GetGeometry(i);
                if((localGeometry != null)&&(localGeometry.getStatus() != lkGeometryStatus.enDelete))
                {
                    if(localGeometry.getSymbol() == null)
                    {
                        Tools.ShowMessageBox(localGeometry.getTag());
                        return;
                    }
                    localGeometry.getSymbol().DrawLabel(this._Map, paramCanvas, localGeometry, paramInt1, paramInt2, paramSelection.getType());
                }
            }
        }
        
        public void FastRefresh()
        {
            DrawSelection(this._ShowSelection);
        }
        
        public int GetFieldIndex(String paramString)
        {
            return -1;
        }
        
        public Geometry GetObject(int paramInt)
        {
            return null;
        }
        
        public void Refresh()
        {
            this._Dataset.QueryWithExtend(this._Map.getExtend(), this._ShowSelection);
        }
        
        public void UpdateGeometry(Geometry paramGeometry){}
        
        public Dataset getDataset()
        {
            return this._Dataset;
        }
        
        public String getDisplayFilter()
        {
            return this._DisplayFilter;
        }
        
        public boolean getEditable()
        {
            return this._Editable;
        }
        
        public Map getMap()
        {
            return this._Map;
        }
        
        public String getName()
        {
            return this._Name;
        }
        
        public IRender getRender()
        {
            return this._Render;
        }
    
        public Selection getSelSelection() {
            // TODO Auto-generated method stub
            return this._SelSelection;
        }
        
        public boolean getSelectable()
        {
            return this._Selectable;
        }
    
        public Selection getShowSelection() {
            // TODO Auto-generated method stub
            return this._ShowSelection;
        }
        
        public lkGeoLayerType getType()
        {
            return this._Type;
        }
        
        public boolean getVisible()
        {
            return this._Visible;
        }
        
        public double getVisibleScaleMax()
        {
            return this._VisibleScaleMax;
        }
        
        public double getVisibleScaleMin()
        {
            return this._VisibleScaleMin;
        }
    
        public void setDataset(Dataset paramDataset)
        {
            this._Dataset = paramDataset;
            this._SelSelection.setDataset(this._Dataset);
            this._ShowSelection.setDataset(this._Dataset);
            this._Dataset.setBindGeoLayer(this);
        }
        
        public void setEditable(boolean paramBoolean)
        {
            this._Editable = paramBoolean;
        }
        
        public void setName(String paramString)
        {
            this._Name = paramString;
        }
        
        public void setRender(IRender paramIRender)
        {
            this._Render = paramIRender;
        }
        
        public void setSelectable(boolean paramBoolean)
        {
            this._Selectable = paramBoolean;
        }
        
        public void setSnapable(boolean paramBoolean)
        {
            this._Snapable = paramBoolean;
        }
        
        public void setType(lkGeoLayerType paramlkGeoLayerType)
        {
            this._Type = paramlkGeoLayerType;
        }
        
        public void setVisible(boolean paramBoolean)
        {
            this._Visible = paramBoolean;
        }
        
        public void setVisibleScaleMax(double paramDouble)
        {
            this._VisibleScaleMax = paramDouble;
        }
        
        public void setVisibleScaleMin(double paramDouble)
        {
            this._VisibleScaleMin = paramDouble;
        }
    }
    View Code

     FieldInfo.java 属性信息类

    public class FieldInfo {
        private String _Caption = "";
        private String _Name = "";
        private boolean _Type = false;
        
        public String getCaption()
        {
            return this._Caption;
        }
        
        public String getName()
        {
            return this._Name;
        }
        
        public boolean getType()
        {
            return this._Type;
        }
    
        public void setCaption(String paramString) {
            // TODO Auto-generated method stub
            this._Caption = paramString;
        }
    
        public void setName(String paramString) {
            // TODO Auto-generated method stub
            this._Name = paramString;
            this._Name = this._Name.toUpperCase();
            if(this._Name.indexOf("SYS_")>=0){
                this._Type = true;
            }
        }
    
    
    }
    View Code

     v1_LayerRenderExplorer.java 图层渲染

    public class v1_LayerRenderExplorer {
        
        private boolean RenderLayer(v1_Layer paramv1_Layer, lkEditMode paramlkEditMode)
        {
            if(paramlkEditMode == lkEditMode.enNew)
            {
                Object localObject = PubVar.m_Workspace.GetDataSourceByEditing();
                Dataset localDataset = new Dataset((DataSource)localObject);
                localDataset.setName(paramv1_Layer.GetLayerID());
                localDataset.setType(paramv1_Layer.GetLayerType());
                ((DataSource)localObject).getDatasets().add(localDataset);
                Log.d("v1_LayerRenderExplorer", "AddlocalDataset");
                GeoLayer localObject2 = new GeoLayer(PubVar.m_Map);
                ((GeoLayer)localObject2).setDataset(localDataset);
                ((GeoLayer)localObject2).setName(localDataset.getName());
                ((GeoLayer)localObject2).setType(localDataset.getType());
                localDataset.setBindGeoLayer((GeoLayer)localObject2);
                PubVar.m_Map.getGeoLayers().AddLayer((GeoLayer)localObject2);
                Log.d("v1_LayerRenderExplorer", "AddLayer");
                RenderLayer(paramv1_Layer, lkEditMode.enEdit);
            }
            if(paramlkEditMode == lkEditMode.enEdit){
                RenderLayerForGeoLayer(PubVar.m_Map.getGeoLayers().GetLayerByName(paramv1_Layer.GetLayerID()), paramv1_Layer); //渲染GeoLayer
            }
            return true;
        }
        
        private void RenderLayerForGeoLayer(GeoLayer paramGeoLayer, v1_Layer paramv1_Layer)
        {
            Log.d("v1_LayerRenderExplorer", "Into RenderLayerForGeoLayer");
            paramGeoLayer.setVisible(paramv1_Layer.GetVisible());
            Log.d("v1_LayerRenderExplorer", "SetVisible");
            if(paramGeoLayer.getRender() == null){
                paramGeoLayer.setRender(new SimpleRender(paramGeoLayer));
            }
            Log.d("v1_LayerRenderExplorer", "set Render");
            paramGeoLayer.getRender().setIfLabel(paramv1_Layer.GetIfLabel());
            Log.d("v1_LayerRenderExplorer", "set IfLabel");
            paramGeoLayer.getRender().setLabelField(paramv1_Layer.GetLabelDataField());
            Log.d("v1_LayerRenderExplorer", "set LabelField");
            paramGeoLayer.getRender().setLabelFont(paramv1_Layer.GetLabelFont());
            Log.d("v1_LayerRenderExplorer", "set LabelFont");
            ((SimpleRender)paramGeoLayer.getRender()).setSymbolName(paramv1_Layer.GetSymbolName());
            Log.d("v1_LayerRenderExplorer", "set SymbolName");
            ((SimpleRender)paramGeoLayer.getRender()).SetSymbolTransparent(paramv1_Layer.GetTransparet());
            Log.d("v1_LayerRenderExplorer", "set SymbolTransparent");
            paramGeoLayer.getRender().LoadSymbol();
            Log.d("v1_LayerRenderExplorer", "After Load Symbol");
            int i = 0;
            for(;;)
            {
                if(i >= paramGeoLayer.getDataset().getRecordCount()){
                    return;
                }
                Log.d("v1_LayerRenderExplorer", "get geometry");
                Geometry paramv1_Layer2 = paramGeoLayer.getDataset().GetGeometry(i);
                paramGeoLayer.getRender().UpdateSymbol(paramv1_Layer2);
                i += 1;
            }
        }
    
        public boolean RenderLayerForAdd(v1_Layer paramv1_Layer) {
            // TODO Auto-generated method stub
            return RenderLayer(paramv1_Layer, lkEditMode.enNew);
        }
        
        public boolean RenderLayerForUpdate(v1_Layer paramv1_Layer)
        {
            return RenderLayer(paramv1_Layer, lkEditMode.enEdit);
        }
        
        public void RenderLayerForUpdateAllLabel(v1_Layer paramv1_Layer)
        {
            Object localObject = PubVar.m_Workspace.GetDataSourceByEditing();
            Dataset localDataset = ((DataSource)localObject).GetDatasetByName(paramv1_Layer.GetLayerID());
            localObject = ((DataSource)localObject).Query("select SYS_ID," + paramv1_Layer.GetLabelDataField() + " from " +
            paramv1_Layer.GetLayerID());
            if(localObject == null){
                return;
            }
            while(((SQLiteDataReader)localObject).Read())
            {
                String str1 = ((SQLiteDataReader)localObject).GetString("SYS_ID");
                String str2 = ((SQLiteDataReader)localObject).GetString(paramv1_Layer.GetLabelDataField());
                localDataset.GetGeometryFromDIndex(Integer.parseInt(str1)).setTag(str2);
            }
            ((SQLiteDataReader)localObject).Close();
        }
    
        public boolean RenderBKLayerForAdd(v1_Layer paramv1_Layer) {
            // TODO Auto-generated method stub
            Dataset localDataset = PubVar.m_Workspace.GetDataSourceByUnEditing().GetDatasetByName(paramv1_Layer.GetLayerID());
            GeoLayer localGeoLayer = new GeoLayer(PubVar.m_Map);
            localGeoLayer.setDataset(localDataset);
            localGeoLayer.setName(localDataset.getName());
            localGeoLayer.setType(localDataset.getType());
            localDataset.setBindGeoLayer(localGeoLayer);
            PubVar.m_Map.getBKGeoLayers().AddLayer(localGeoLayer);
            RenderLayerForGeoLayer(localGeoLayer, paramv1_Layer);
            return true;
        }
    
    }
    View Code

     LayerCellIndex.java 图层细胞索引

    public class LayerCellIndex {
      private List<ArrayList<Integer>> _CellIndex = new ArrayList(); //0-1023共1024个ArrayList
      private List<Integer> _CurrentCellIndex = new ArrayList(); //当前的List<Integer>细胞索引
      
      public LayerCellIndex()
      {
          int i = 0;
          for(;;)
          {
              if(i >= 1024){
                  return;
              }
              this._CellIndex.add(new ArrayList());
              i += 1;
          }
      }
      
      public void ClearAllIndex()
      {
          Iterator localIterator = this._CellIndex.iterator();
          for(;;)
          {
              if(!localIterator.hasNext()){
                  return;
              }
              ((List)localIterator.next()).clear();
          }
      }
      
      public void RemoveIndex(int paramInt)
      {
          Iterator localIterator = this._CellIndex.iterator();
          for(;;)
          {
              if(!localIterator.hasNext()){
                  return;
              }
              List localList = (List)localIterator.next();
              int i = localList.indexOf(Integer.valueOf(paramInt));
              if(i >= 0){
                  localList.remove(i);
              }
          }
      }
      
      public void SetIndex(List<Integer> paramList, int paramInt)
      {
          Iterator<Integer> paramList2 = paramList.iterator();
          for(;;)
          {
              if(!paramList2.hasNext()){
                  return;
              }
              int i = ((Integer)paramList2.next()).intValue();
              ((ArrayList)this._CellIndex.get(i)).add(Integer.valueOf(paramInt));
          }
      }
      
      public void UpdateIndex(List<Integer> paramList, int paramInt)
      {
          RemoveIndex(paramInt);
          SetIndex(paramList, paramInt);
      }
      
      public List<ArrayList<Integer>> getCellIndex()
      {
          return this._CellIndex;
      }
      
      public List<Integer> getCurrentCellIndex()
      {
          return this._CurrentCellIndex;
      }
      
      public void setCellIndex(List<ArrayList<Integer>> paramList)
      {
          this._CellIndex = paramList;
      }
      
      public void setCurrentCellIndex(List<Integer> paramList)
      {
          this._CurrentCellIndex = paramList;
      }
    }
    View Code

     MapCellIndex.java

    public class MapCellIndex {
      private Envelope _BigCell; //大细胞 Envelope范围
      private double _CellHeight; //一个细胞的高度
      private double _CellWidth; //一个细胞的宽度
      private int _Cells = 32; //细胞的个数
      
      public MapCellIndex()
      {
          InitCellIndex(getCells());
      }
      
      private void CalCellIndex(double paramDouble1, double paramDouble2, Param paramParam1, Param paramParam2) //计算细胞索引
      {
          int k = (int)((paramDouble2 - getBigCell().getMinY())/getCellHeigth()); //Y方向的个数
          int j = (int)((paramDouble1 - getBigCell().getMinX())/getCellWidth()); //X方向的个数
          Log.d("MapCellIndex", "paramDouble2:" + paramDouble2 + ",BigCell:" + getBigCell() + ",CellHeight:" + getCellHeigth() + ",k:" + k);
          Log.d("MapCellIndex", "paramDouble1:" + paramDouble1 + ",BigCell:" + getBigCell() + ",CellWidth:" + getCellWidth() + ",j:" + j);
          
          int i = 0;
          
          
          for(;;)
          {
              if(j >= getCells()) //基本不太可能发生
              {
                  i = getCells() - 1;
                  if(k < getCells()){
                      break;
                  }
                  j = getCells() - 1;
              } 
              
              if(j >= 0){
                  i = j;
                  j = k;
                  break;
              }
              if(k <=0 ){ //不太可能发生
                  j = 0;
                  i = 0;
                  break;
              }
          }
          paramParam1.setValue(j);
          paramParam2.setValue(i);
          return;
          
          /*
          int i = 0;
          Log.d("MapCellIndex", String.valueOf(getCells())); //32个
          if(j >= getCells())
          {
              i = getCells() - 1;
              if(k < getCells()){
                  //break;
              }
              j = getCells() - 1;
          }
          for(;;)
          {
              if(k < 0){
                  j = 0;
              }
              j = k;
              i = j;
              paramParam1.setValue(j);
              paramParam2.setValue(i);
              if(j>=0){
                  break;
              }
              return;
              //break;
              
          }
          */
      }
      
      private void InitCellIndex(int paramInt)
      {
          this._BigCell = GetCellExtend();
          this._CellHeight = (this._BigCell.getHeight() / paramInt);
          this._CellWidth = (this._BigCell.getWidth() / paramInt);
      }
      
      public int CalCellIndex(Coordinate paramCoordinate)
      {
          Param localParam1 = new Param();
          Param localParam2 = new Param();
          CalCellIndex(paramCoordinate.getX(), paramCoordinate.getY(), localParam1, localParam2);
          int i = localParam1.getInt();
          int j = localParam2.getInt();
          return getCells() * i + j;
      }
      
      public List<Integer> CalCellIndex(Coordinate paramCoordinate, double paramDouble)
      {
          ArrayList localArrayList = new ArrayList();
          Polygon paramCoordinate2;
          if(paramDouble == 0.0D)
          {
              Param localParam1 = new Param();
              Param localParam2 = new Param();
              CalCellIndex(paramCoordinate.getX(), paramCoordinate.getY(), localParam1, localParam2);
              int i = localParam1.getInt();
              int j = localParam2.getInt();
              localArrayList.add(Integer.valueOf(getCells() * i + j));
              return localArrayList;
          }
          localArrayList = new ArrayList();
          int i = 1;
          for (;;)
          {
              if(i > 4)
              {
                  paramCoordinate2 = new Polygon();
                  paramCoordinate2.SetAllCoordinateList(localArrayList);
                  return paramCoordinate2.CalCellIndex();
              }
              double d2 = 0.0D;
              double d1 = 0.0D;
              if(i == 1)
              {
                  d2 = paramCoordinate.getX() - paramDouble;
                  d1 = paramCoordinate.getY() - paramDouble;
              }
              if(i == 2)
              {
                  d2 = paramCoordinate.getX() + paramDouble;
                  d1 = paramCoordinate.getY() - paramDouble;
              }
              if(i == 3)
              {
                  d2 = paramCoordinate.getX() + paramDouble;
                  d1 = paramCoordinate.getY() + paramDouble;
              }
              if(i == 4)
              {
                  d2 = paramCoordinate.getX() - paramDouble;
                  d1 = paramCoordinate.getY() + paramDouble;
              }
              localArrayList.add(new Coordinate(d2, d1));
              i += 1;
          }
      }
      
      public List<Integer> CalCellIndex(Envelope paramEnvelope)
      {
          ArrayList localArrayList = new ArrayList();
          Param localParam1 = new Param();
          Param localParam2 = new Param();
          Param localParam3 = new Param();
          Param localParam4 = new Param();
          CalCellIndex(paramEnvelope.getLeftTop(), localParam1, localParam4);
          CalCellIndex(paramEnvelope.getRightBottom(), localParam2, localParam3);
          Log.d("MapCellIndex", "After CalCellIndex");
          int m = localParam1.getInt();
          int i = localParam2.getInt();
          int n = localParam3.getInt();
          int k = localParam4.getInt();
          if(i > m){
              return localArrayList;
          }
          int j = k;
          for(;;)
          {
              if(j > n)
              {
                  i += 1;
                  break;
              }
              localArrayList.add(Integer.valueOf(getCells() * i + j));
              j += 1;
          }
          return localArrayList;
      }
      
      public void CalCellIndex(Coordinate paramCoordinate, Param paramParam1, Param paramParam2)
      {
          CalCellIndex(paramCoordinate.getX(), paramCoordinate.getY(), paramParam1, paramParam2);
      }
      
      public Envelope GetCellExtend()
      {
          Log.d("MapCellIndex", "Into GetCellExtend");
          if(this._BigCell == null){
              SetCellExtend(new Coordinate(0.0D, 0.0D), new Coordinate(999999.0D, 999999.0D));
          }
          Log.d("MapCellIndex", "Before return big cell");
          return getBigCell();
      }
      
      public void SetCellExtend(Coordinate paramCoordinate1, Coordinate paramCoordinate2)
      {
          this._BigCell = new Envelope(paramCoordinate1, paramCoordinate2);
          this._CellHeight = (this._BigCell.getHeight()/this._Cells);
          this._CellWidth = (this._BigCell.getWidth()/this._Cells);
      }
      
      public Envelope getBigCell()
      {
        return this._BigCell;
      }
      
      public double getCellHeigth()
      {
        return this._CellHeight;
      }
      
      public double getCellWidth()
      {
        return this._CellWidth;
      }
      
      public int getCells()
      {
        return this._Cells;
      }
    }
    View Code

     Selection.java 选择Dataset

    public class Selection {
        private Dataset _Dataset = null;
        private List<Integer> _GeometryIndexList = new ArrayList();
        private ISymbol _Style = null;
        public lkSelectionType _Type = lkSelectionType.enUnKnow;
    
        public boolean Add(int paramInt) {
            // TODO Auto-generated method stub
            if(getGeometryIndexList().indexOf(Integer.valueOf(paramInt)) >= 0 ){
                return true;
            }
            getGeometryIndexList().add(Integer.valueOf(paramInt));
            return true;
        }
        
        public boolean Add(Geometry paramGeometry)
        {
            return Add(paramGeometry.getIndex());
        }
        
        public boolean FromRecordset()
        {
            return true;
        }
        
        public boolean Remove(int paramInt)
        {
            return getGeometryIndexList().remove(Integer.valueOf(paramInt));
        }
        
        public boolean Remove(Geometry paramGeometry)
        {
            return true;
        }
        
        public boolean RemoveAll()
        {
            this._GeometryIndexList.clear();
            return true;
        }
        
        public Dataset getDataset()
        {
            return this._Dataset;
        }
        
        public Envelope getEnvelope()
        {
            Object localObject;
            if(getGeometryIndexList().size() == 0)
            {
                localObject = null;
                return (Envelope)localObject;
            }
            Envelope localEnvelope = this._Dataset.GetGeometry(((Integer)getGeometryIndexList().get(0)).intValue()).getEnvelope();
            int i = 1;
            for(;;)
            {
                localObject = localEnvelope;
                if(i >= getGeometryIndexList().size()){
                    break;
                }
                localEnvelope = localEnvelope.MergeEnvelope(this._Dataset.GetGeometry(((Integer)getGeometryIndexList().get(i)).intValue()).getEnvelope());
                i += 1;
            }
            return localEnvelope;
        }
        
        public List<Integer> getGeometryIndexList() {
            // TODO Auto-generated method stub
            return this._GeometryIndexList;
        }
        
        public ISymbol getStyle()
        {
            return this._Style;
        }
        
        public lkSelectionType getType()
        {
            return this._Type;
        }
        
        public void setDataset(Dataset paramDataset)
        {
            this._Dataset = paramDataset;
        }
        
        public void setStyle(ISymbol paramISymbol)
          {
            this._Style = paramISymbol;
          }
    
        public int getCount() {
            // TODO Auto-generated method stub
            return this._GeometryIndexList.size();
        }
    
        public void setType(lkSelectionType paramlkSelectionType)
        {
            this._Type = paramlkSelectionType;
        }
    
    }
    View Code

    Point.java

    public class Point extends Geometry {
        
        public Point()
        {
            setStatus(lkGeometryStatus.enNormal);
            IsSimple(true);
        }
        
        public Point(double paramDouble1, double paramDouble2)
        {
            setItems(new ArrayList());
            getItems().add(new Coordinate(paramDouble1, paramDouble2));
            InitPoint();
        }
        
        public Point(List<Coordinate> paramList)
        {
            setItems(paramList);
            InitPoint();
        }
        
        public Point(Coordinate paramCoordinate)
        {
            setItems(new ArrayList());
            getItems().add(paramCoordinate);
            InitPoint();
        }
        
        private void InitPoint()
        {
            setStatus(lkGeometryStatus.enNormal);
            if(PartCount() == 1)
            {
                IsSimple(true);
                return;
            }
            IsSimple(false);
        }
        
    
        @Override
        public List<Integer> CalCellIndex() {
            // TODO Auto-generated method stub
            ArrayList localArrayList = new ArrayList();
            Param localParam1 = new Param();
            Param localParam2 = new Param();
            int i;
            int j;
            Iterator localIterator = getItems().iterator();
            
            for(;;)
            {
                if(IsSimple())
                {
                    StaticObject.soMapCellIndex.CalCellIndex((Coordinate)getItems().get(0), localParam1, localParam2);
                    i = localParam1.getInt();
                    j = localParam2.getInt();
                    localArrayList.add(Integer.valueOf(StaticObject.soMapCellIndex.getCells()*i + j));
                    return localArrayList;
                }
                while(localIterator.hasNext())
                {
                    Coordinate localCoordinate = (Coordinate)localIterator.next();
                    StaticObject.soMapCellIndex.CalCellIndex(localCoordinate, localParam1, localParam2);
                    i = localParam1.getInt();
                    j = localParam2.getInt();
                    localArrayList.add(Integer.valueOf(StaticObject.soMapCellIndex.getCells()*i + j));
                }
                return localArrayList;
            }
            
            /*
            if(IsSimple())
            {
                StaticObject.soMapCellIndex.CalCellIndex((Coordinate)getItems().get(0), localParam1, localParam2);
                i = localParam1.getInt();
                j = localParam2.getInt();
                localArrayList.add(Integer.valueOf(StaticObject.soMapCellIndex.getCells() * i + j));
            }
            for(;;)
            {
                Iterator localIterator = getItems().iterator();
                while(localIterator.hasNext())
                {
                    Coordinate localCoordinate = (Coordinate)localIterator.next();
                    StaticObject.soMapCellIndex.CalCellIndex(localCoordinate, localParam1, localParam2);
                    i = localParam1.getInt();
                    j = localParam2.getInt();
                    localArrayList.add(Integer.valueOf(StaticObject.soMapCellIndex.getCells()*i + j));
                }
                return localArrayList;
            }
            */
        }
    
        @Override
        public Geometry Clone() {
            // TODO Auto-generated method stub
            ArrayList localArrayList = new ArrayList();
            Iterator localIterator = GetAllCoordinateList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return new Point(localArrayList);
                }
                localArrayList.add(((Coordinate)localIterator.next()).Clone());
            }
        }
        
        public double DistanceTo(Coordinate paramCoordinate)
        {
            double d2;
            if(IsSimple())
            {
                d2 = Tools.GetTwoPointDistance((Coordinate)getItems().get(0), paramCoordinate);
                return d2;
            }
            double d1 = 1.7976931348623157E+308D;
            Iterator localIterator = getItems().iterator();
            for(;;)
            {
                d2 = d1;
                if(!localIterator.hasNext()){
                    break;
                }
                d2 = Tools.GetTwoPointDistance((Coordinate)localIterator.next(), paramCoordinate);
                if(d2 < d1){
                    d1 = d2;
                }
            }
            return d1;
        }
        
        public List<Coordinate> GetAllPartCoordinate()
        {
            return getItems();
        }
        
        public Coordinate GetPart(int paramInt)
        {
            return (Coordinate)getItems().get(paramInt);
        }
    
        @Override
        public lkGeoLayerType GetType() {
            // TODO Auto-generated method stub
            return lkGeoLayerType.enPoint;
        }
    
        @Override
        public boolean HitTest(Coordinate paramCoordinate, double paramDouble) {
            // TODO Auto-generated method stub
            return DistanceTo(paramCoordinate) <= paramDouble;
        }
    
        @Override
        public boolean Offset(double paramDouble1, double paramDouble2) {
            // TODO Auto-generated method stub
            return false;
        }
        
        public int PartCount()
        {
            return getItems().size();
        }
        
        public double getX()
        {
            return ((Coordinate)getItems().get(0)).getX();
        }
      
        public double getY()
        {
            return ((Coordinate)getItems().get(0)).getY();
        }
        
        public void setX(double paramDouble)
        {
            ((Coordinate)getItems().get(0)).setX(paramDouble);
        }
        
        public void setY(double paramDouble)
        {
            ((Coordinate)getItems().get(0)).setY(paramDouble);
        }
    }
    View Code

    Polyline.java 多线

    public class Polyline extends Geometry {
        private double _Length = -1.0D; //长度
        private List<Integer> _PartIndex = new ArrayList(); //线段索引
        private SpatialRelation _SpatialRelation = null; //空间关系
        
        public Polyline()
        {
            setStatus(lkGeometryStatus.enNormal);
            IsSimple(true);
        }
        
        private double CalLength()//计算总长度
        {
            return CalLengthToVertex(getVertexList().size() - 1); 
        }
        
        private void DoIndexList(List<Integer> paramList, int paramInt)
        {
            if(paramList.indexOf(Integer.valueOf(paramInt))<0){ //如果paramInt的值不存在就加入
                paramList.add(Integer.valueOf(paramInt));
            }
        }
        
        private List<Coordinate> Douglas_Peuker(List<Coordinate> paramList1, List<Coordinate> paramList2, int paramInt1,
                int paramInt2, double paramDouble) //道格拉斯-普克算法,用于精简点的数量,各参数含义:paramDouble为抽稀精度,paramList1为坐标数列
        {
            if(Math.abs(paramInt1 - paramInt2)<2){}
            Param localParam = new Param();
            int i = 0;
            i = FindFurthestPt(paramList2, paramInt1, paramInt2, localParam); //i为最远的点,为paramInt1?
            if(localParam.getDouble() <= paramDouble) //如果小于抽稀精度,表示精简完成
            {
                return paramList1;
            }
            Douglas_Peuker(paramList1, paramList2, paramInt1, i, paramDouble); //自循环,分成两段,左半段
            paramList1.add(((Coordinate)paramList2.get(i)).Clone()); //添加克隆点
            Douglas_Peuker(paramList1, paramList2, i, paramInt2, paramDouble); //自循环,分成两段,右半段
            return paramList1;
        }
        
        private int FindFurthestPt(List<Coordinate> paramList, int paramInt1, int paramInt2, Param paramParam)
        {
            return paramInt1;
        }
        
        public void AddPart(List<Coordinate> paramList)
        {
            if((this._PartIndex == null)&&(getItems().size() == 0))
            {
                setItems(paramList);
                IsSimple(true);
                return;
            }
            int i = getItems().size();
            Iterator<Coordinate> paramList2 = paramList.iterator();
            for(;;)
            {
                if(!paramList2.hasNext())
                {
                    IsSimple(false);
                    if(this._PartIndex == null)
                    {
                        this._PartIndex = new ArrayList();
                        this._PartIndex.add(Integer.valueOf(0));
                    }
                    this._PartIndex.add(Integer.valueOf(i));
                    return;
                }
                Coordinate localCoordinate = (Coordinate)paramList2.next();
                getItems().add(localCoordinate);
            }
        }
        
        @Override
        public List<Integer> CalCellIndex() {
            // TODO Auto-generated method stub
            Param localParam1 = new Param();
            Param localParam2 = new Param();
            Param localParam3 = new Param();
            Param localParam4 = new Param();
            Param localParam5 = new Param();
            Param localParam6 = new Param();
            ArrayList localArrayList1 = new ArrayList();
            ArrayList localArrayList2 = new ArrayList();
            int m=0;
            for(;;)
            {
                Coordinate localCoordinate = (Coordinate)getVertexList().get(m);
                Object localObject = (Coordinate)getVertexList().get(m+1);
                StaticObject.soMapCellIndex.CalCellIndex(localCoordinate, localParam1, localParam2); //计算点localCoordinate的CellIndex
                StaticObject.soMapCellIndex.CalCellIndex((Coordinate)localObject, localParam3, localParam4); //计算localObject的CellIndex
                int i = localParam1.getInt(); //localCoordinate的x
                int j = localParam2.getInt(); //localCoordinate的y
                int i2 = localParam3.getInt(); //localObject的x
                int i3 = localParam4.getInt(); //localObject的y
                if(m >= getVertexList().size() - 1){ //如果已遍历结束返回localArrayList1(CellIndex数列)
                    return localArrayList1;
                }
                if((i == i2)||(j == i3)) //如果m和m+1的x或者y索引一样
                {
                    if(i == i2){ //如果i==i2 x值相等
                        if(j > i3){ //而j>i3 y值
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j); //加入i,j的CellIndex
                            j -= 1;
                            if(j >= i3){}
                        }
                        if(j <= i3){
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j);
                            j += 1;
                        }
                    }
                    if(i > i2){ //j==i3
                        if(i >= i2){
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j);
                            i -= 1;
                        }
                    }
                    else{ //i<i2 j==i3
                        if(i <= i2){
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j);
                               i += 1;
                        }
                    }
                    
                }
                //否则i不等于i2,j也不等于i3
                
                double d4 = (((Coordinate)localObject).getY() - localCoordinate.getY())/(((Coordinate)localObject).getX() - localCoordinate.getX());
                double d5 = StaticObject.soMapCellIndex.getCellWidth();
                double d6 = StaticObject.soMapCellIndex.getCellHeigth();
                localArrayList2.clear();
                int i1 = 1;
                int k = 1;
                int n = 0;
                //label444://有循环?
                double d2;
                double d1;
                double d3;
                if(Math.abs(i3 - j)>Math.abs(i2 - i))
                {
                    n = j;
                    for(;;)
                    {
                        k = 1;
                        if(n >= i3){
                            break;
                        }
                        localArrayList2.add(Integer.valueOf(n));
                        n += 1;
                    }
                    localArrayList2.add(Integer.valueOf(n));
                    if(j > i3)
                    {
                        n = j;
                        if(n <= i3)
                        {
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j);
                            localObject = localArrayList2.iterator();
                        }
                    }
                    for(;;)
                    {
                        if(!((Iterator)localObject).hasNext())
                        {
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells()*i2 + i3);
                            break;
                        }
                        j = ((Integer)((Iterator)localObject).next()).intValue();
                        d2 = 0.0D;
                        i = 1;
                        while(i<=2)
                        {
                            d1 = d2;
                            if(i == 1)
                            {
                                d1 = d2;
                                if(k != 0){
                                    d1 = (j + 1)*d5 - 1.0D;
                                }
                            }
                            d2 = d1;
                            if(i == 2)
                            {
                                d2 = d1;
                                if(k != 0){
                                    d2 = (j + 1)*d5 + 1.0D;
                                }
                            }
                            d3 = d2;
                            if(i == 1)
                            {
                                d3 = d2;
                                if(k == 0){
                                    d3 = j * d5 + 1.0D;
                                }
                            }
                            d1 = d3;
                            if(i == 2)
                            {
                                d1 = d3;
                                if(k == 0){
                                    d1 = j * d5 - 1.0D;
                                }
                            }
                            d2 = d1 + StaticObject.soMapCellIndex.getBigCell().getMinX();
                            d3 = localCoordinate.getY();
                            d6 = localCoordinate.getX();
                            StaticObject.soMapCellIndex.CalCellIndex(new Coordinate(d2, d3 + (d2 - d6)*d4), localParam5, localParam6);
                            n = localParam5.getInt();
                            i1 = localParam6.getInt();
                            DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * n + i1);
                            i += 1;
                            d2 = d1;
                        }
                        
                    }
                }
                
                n = i;
                for(;;)
                {
                    k = 1;
                    if(n >= i2){
                        break;
                    }
                    localArrayList2.add(Integer.valueOf(n));
                    n += 1;
                }
                if(i > i2)
                {
                    n = i;
                    k = i1;
                    if(n <= i2) //i<=i2
                    {
                        DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * i + j);
                        localObject = localArrayList2.iterator();
                        k = 0;
                        n -= 1;
                    }
                    localArrayList2.add(Integer.valueOf(n));
                }
                for(;;)
                {
                    if(!((Iterator)localObject).hasNext())
                    {
                        DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells()*i2 + i3);
                        break;
                    }
                    j = ((Integer)((Iterator)localObject).next()).intValue();
                    d2 = 0.0D;
                    i = 1;
                    while(i <= 2)
                    {
                        d1 = d2;
                        if(i == 1)
                        {
                            d1 = d2;
                            if(k != 0){
                                d1 = (j + 1)*d6 - 1.0D;
                            }
                        }
                        d2 = d1;
                        if(i == 2)
                        {
                            d2 = d1;
                            if(k != 0){
                                d2 = (j + 1)*d6 + 1.0D;
                            }
                        }
                        d3 = d2;
                        if(i == 1)
                        {
                            d3 = d2;
                            if(k == 0){
                                d3 = j * d6 + 1.0D;
                            }
                        }
                        d1 = d3;
                        if(i == 2)
                        {
                            d1 = d3;
                            if(k == 0){
                                d1 = j * d6 - 1.0D;
                            }
                        }
                        d2 = d1 + StaticObject.soMapCellIndex.getBigCell().getMinY();
                        d3 = -(localCoordinate.getY() - d2)/d4;
                        d5 = localCoordinate.getX();
                        StaticObject.soMapCellIndex.CalCellIndex(new Coordinate(d3 + d5, d2), localParam5, localParam6);
                        n = localParam5.getInt();
                        i1 = localParam6.getInt();
                        DoIndexList(localArrayList1, StaticObject.soMapCellIndex.getCells() * n + i1);
                        i += 1;
                        d2 = d1;
                    }
                }
                
                m += 1; //循环变量
                
                continue;
            }
            
        }
        
        public double CalLengthToVertex(int paramInt)
        {
            double d = 0.0D;
            int i = 0;
            for(;;)
            {
                if(i >= paramInt){
                    return d;
                }
                d += Tools.GetTwoPointDistance((Coordinate)getVertexList().get(i),(Coordinate)getVertexList().get(i + 1));
                i += 1;
            }
        }
        
        public double CalLengthToVertex(Coordinate paramCoordinate)
        {
            int i = 0;
            Iterator localIterator = getVertexList().iterator();
            for(;;)
            {
                if (!localIterator.hasNext()) {}
                Coordinate localCoordinate;
                do
                {
                    int j = i;
                    if(i == getVertexList().size()){
                        j = 0;
                    }
                    localCoordinate = (Coordinate)localIterator.next();
                    return CalLengthToVertex(j);
                }while((Math.abs(localCoordinate.getX() - paramCoordinate.getX()) < 1.0D) && 
                        (Math.abs(localCoordinate.getY() - paramCoordinate.getY()) < 1.0D));
                //i += 1;
            }
        }
        
        //public Geometry
        
        public boolean CheckCorner(List<Coordinate> paramList)
        {
            boolean bool = true;
            int j = GetAllCoordinateList().size();
            int i = 0;
            for(;;)
            {
                if(i >= j - 2){
                    return bool;
                }
                if(Tools.AngleB((Coordinate)GetAllCoordinateList().get(i), (Coordinate)GetAllCoordinateList().get(i+1),
                        (Coordinate)GetAllCoordinateList().get(i+2))<90.0D )
                {
                    paramList.add(((Coordinate)GetAllCoordinateList().get(i+1)).Clone());
                    bool = false;
                }
                i += 1;
            }
        }
        
        @Override
        public Geometry Clone() {
            // TODO Auto-generated method stub
            Polyline localPolyline = new Polyline();
            Iterator localIterator = GetAllCoordinateList().iterator();
            for(;;)
            {
                if(!localIterator.hasNext())
                {
                  localPolyline.setID(getID());
                  return localPolyline;
                }
                Coordinate localCoordinate = (Coordinate)localIterator.next();
                localPolyline.GetAllCoordinateList().add(localCoordinate.Clone());
            }
            //return null;
        }
    
        
        public int CompressPolylineDouglas(double paramDouble) //压缩?
        {
            int i = GetAllCoordinateList().size();
            List localList = CompressPolylineDouglas(GetAllCoordinateList(), paramDouble);
            setVertexList(localList);
            return i - localList.size();
        }
        
        public List<Coordinate> CompressPolylineDouglas(List<Coordinate> paramList, double paramDouble)
        {
            int j = paramList.size() - 1;
            int i = paramList.size() - 1;
            //label29:
            Object localObject = null;
            if(i < 0)
            {
                i = j;
                localObject = new ArrayList();
                ((List)localObject).add(((Coordinate)paramList.get(0)).Clone());
                localObject = Douglas_Peuker((List)localObject, paramList, 0, i, paramDouble);
            }
            for(;;)
            {
                if(i > paramList.size() - 1)
                {
                    if(!((Coordinate)paramList.get(0)).Equal((Coordinate)paramList.get(i))){
                        break;
                    }
                    i -= 1;
                    break;
                }
                ((List)localObject).add(((Coordinate)paramList.get(i)).Clone());
                i += 1;
            }
            return (List)localObject;
        }
        
        public boolean Flip()
        {
          return true;
        }
        
        public List<Coordinate> GetPartAt(int paramInt)
        {
            Object localObject;
            if(IsSimple())
            {
                localObject = getItems();
                return (List<Coordinate>) localObject;
            }
            ArrayList localArrayList = new ArrayList();
            int j = ((Integer)this._PartIndex.get(paramInt)).intValue();
            int i = getItems().size() - 1;
            if(paramInt != this._PartIndex.size() - 1){
                i = ((Integer)this._PartIndex.get(paramInt + 1)).intValue() - 1;
            }
            paramInt = j;
            for(;;)
            {
                localObject = localArrayList;
                if(paramInt > i){
                    break;
                }
                localArrayList.add((Coordinate)getItems().get(paramInt));
                paramInt += 1;
            }
            return localArrayList;
        }
        
        public boolean GetToStartCoordinate(double paramDouble, Param paramParam, Coordinate paramCoordinate)
        {
            double d = 0.0D;
            int i = 0;
            for(;;)
            {
                if(i > getVertexList().size() - 2)
                {
                    paramParam.setValue(-1);
                    return false;
                }
                paramCoordinate = (Coordinate)getVertexList().get(i);
                Coordinate localCoordinate = (Coordinate)getVertexList().get(i + 1);
                d += Tools.GetTwoPointDistance(paramCoordinate, localCoordinate);
                if(d >= paramDouble)
                {
                    new Line(paramCoordinate, localCoordinate).GetToStartCoordinate(d - paramDouble);
                    paramParam.setValue(i);
                    return true;
                }
                i += 1;
            }
        }
        
        public boolean GetToStartDistance(Coordinate paramCoordinate, double paramDouble, Param paramParam)
        {
            double d3 = 0.0D;
            double d1 = 0.0D;
            Param localParam = new Param();
            int i = 0;
            for(;;)
            {
                if(i > getVertexList().size() - 2)
                {
                    paramParam.setValue(0.0D);
                    return false;
                }
                double d2 = d1;
                if(i >= 1){
                    d2 = d1 + d3;
                }
                Line localLine = new Line((Coordinate)getVertexList().get(i), (Coordinate)getVertexList().get(i+1));
                d3 = localLine.Length();
                if(localLine.PointToLineDistance(paramCoordinate, paramDouble, localParam))
                {
                    paramParam.setValue(d2 + localParam.getDouble());
                    return true;
                }
                i += 1;
                d1 = d2;
            }
        }
    
        @Override
        public lkGeoLayerType GetType() {
            // TODO Auto-generated method stub
            return lkGeoLayerType.enPolyline;
        }
    
        @Override
        public boolean HitTest(Coordinate paramCoordinate, double paramDouble) {
            // TODO Auto-generated method stub
            return HitTestSegment(paramCoordinate, paramDouble, new Param());
        }
        
        public boolean HitTestSegment(Coordinate paramCoordinate, double paramDouble, Param paramParam)
        {
            paramParam.setValue(-1);
            if(!getEnvelope().ContainsPoint(paramCoordinate)){}
            for(;;)
            {
                int i = 0;
                while(i<=getVertexList().size() - 2)
                {
                    paramParam.setValue(i);
                    if(new Line((Coordinate)getVertexList().get(i), (Coordinate)getVertexList().get(i+1)).PointToLineDistance(paramCoordinate,
                            paramDouble))
                    {
                        return true;
                    }
                    i += 1;
                }
            }
            //return false;
        }
        
        public boolean HitTestSegment(Coordinate paramCoordinate, Param paramParam)
        {
            paramParam.setValue(-1);
            int i = 0;
            for(;;)
            {
                if(i > getVertexList().size() - 2){
                    return false;
                }
                paramParam.setValue(i);
                if(new Line((Coordinate)getVertexList().get(i), (Coordinate)getVertexList().get(i+1)).PointOnLine(paramCoordinate)){
                    return true;
                }
                i += 1;
            }
        }
        
        public boolean HitVertexTest(Coordinate paramCoordinate, double paramDouble, Param paramParam)
        {
            int j = -1;
            double d1 = 1.7976931348623157E+308D;
            int i = 0;
            for(;;)
            {
                if(i >= getVertexList().size())
                {
                    paramParam.setValue(j);
                    if(d1 > paramDouble){
                        break;
                    }
                    return true;
                }
                double d3 = Tools.GetTwoPointDistance(paramCoordinate, (Coordinate)getVertexList().get(i));
                double d2 = d1;
                if(d3 < d1)
                {
                    d2 = d3;
                    j = i;
                }
                i += 1;
                d1 = d2;
            }
            paramParam.setValue(-1);
            return false;
        }
        
        public int InVertexList(Coordinate paramCoordinate)
        {
            if(!getEnvelope().ContainsPoint(paramCoordinate)){
                return -1;
            }
            int i = -1;
            Iterator localIterator = GetAllCoordinateList().iterator();
            Coordinate localCoordinate;
            int j;
            do
            {
                if(!localIterator.hasNext()){
                    return -1;
                }
                localCoordinate = (Coordinate)localIterator.next();
                j = i + 1;
                i = j;
            }while(!localCoordinate.Equal(paramCoordinate));
            return j;
        }
        
        public void InsertPartAt(int paramInt, List<Coordinate> paramList){}
        
        public boolean Insersect(Polyline paramPolyline, List<Coordinate> paramList)
        {
            if((!getEnvelope().Intersect(paramPolyline.getEnvelope()))&&(!getEnvelope().Contains(paramPolyline.getEnvelope()))){
                return false;
            }
            int k = GetAllCoordinateList().size();
            int m = paramPolyline.GetAllCoordinateList().size();
            int i = 0;
            if(i > k - 2)
            {
                if(paramList.size() > 0){
                    return true;
                }
            }
            else
            {
                Line localLine1 = new Line((Coordinate)GetAllCoordinateList().get(i), (Coordinate)GetAllCoordinateList().get(i+1));
                int j = 0;
                for(;;)
                {
                    if(j > m-2)
                    {
                        i += 1;
                        break;
                    }
                    Line localLine2 = new Line((Coordinate)paramPolyline.GetAllCoordinateList().get(j), (Coordinate)paramPolyline.GetAllCoordinateList().get(j + 1));
                    if(localLine1.Intersect(localLine2))
                    {
                        Coordinate localCoordinate1 = new Coordinate();
                        Coordinate localCoordinate2 = new Coordinate();
                        int n = localLine1.Intersect(localLine2, localCoordinate1, localCoordinate2);
                        if(n == 1){
                            paramList.add(localCoordinate1.Clone());
                        }
                        if(n == 2)
                        {
                            paramList.add(localCoordinate1.Clone());
                            paramList.add(localCoordinate2.Clone());
                        }
                    }
                    j += 1;
                }
            }
            return false;
        }
    
        @Override
        public boolean Offset(double paramDouble1, double paramDouble2) {
            // TODO Auto-generated method stub
            return true;
        }
    
        public void RemovePartAt(int paramInt){}
        
        public void SetPartAt(int paramInt, List<Coordinate> paramList){}
        
        public boolean Split(Coordinate paramCoordinate, int paramInt, Polyline paramPolyline1, Polyline paramPolyline2)
        {
            paramPolyline1 = new Polyline();
            paramPolyline2 = new Polyline();
            int i = 0;
            if(i >= getVertexList().size())
            {
                paramPolyline1.getVertexList().add(paramCoordinate.Clone());
                paramPolyline2.getVertexList().add(0, paramCoordinate.Clone());
                return true;
            }
            if(i <= paramInt){
                paramPolyline1.getVertexList().add(((Coordinate)getVertexList().get(i)).Clone());
            }
            for(;;)
            {
                paramPolyline2.getVertexList().add(((Coordinate)getVertexList().get(i)).Clone());
                i += 1;
                break;
            }
            return false;
        }
        
        public Coordinate getEndPoint()
        {
            int i = GetAllCoordinateList().size();
            return (Coordinate)GetAllCoordinateList().get(i - 1);
        }
        
        public double getLength(boolean paramBoolean)
        {
            if(paramBoolean){
                this._Length = CalLength();
            }
            if(this._Length == -1.0D){
                this._Length = CalLength();
            }
            return this._Length;
        }
        
        public int getPartCount()
        {
            return this._PartIndex.size();
        }
        
        public List<Integer> getPartIndex()
        {
            return this._PartIndex;
        }
        
        public SpatialRelation getSpatialRelation()
        {
            if(this._SpatialRelation == null){
                this._SpatialRelation = new SpatialRelation(this);
            }
            return this._SpatialRelation;
        }
        
        public Coordinate getStartPoint()
        {
            return (Coordinate)GetAllCoordinateList().get(0);
        }
        
        public List<Coordinate> getVertexList() //获取节点列表,坐标_CoorList
        {
            if(getItems() == null){
                setItems(new ArrayList());
            }
            return getItems();
        }
        
        public void setPartIndex(List<Integer> paramList)
        {
            this._PartIndex = paramList;
        }
        
        public void setVertexList(List<Coordinate> paramList)
        {
            setItems(paramList);
        }
    }
    View Code

    Polygon.java 继承自Geometry

    Geometry.java 几何图形 (abstract抽象类)

    public abstract class Geometry {
      private List<Coordinate> _CoorList = null;
      private boolean _Edited = false;
      private Envelope _Envelope;
      private String _ID;
      private int _Index;
      private boolean _IsSimple = true;
      private lkGeometryStatus _Status = lkGeometryStatus.enNormal;
      private ISymbol _Symbol = null;
      private String _Tag = "";
      
      public abstract List<Integer> CalCellIndex();
      
      public Envelope CalEnvelope()
      {
          double d3 = 0.0D;
          double d2 = 0.0D;
          double d4 = 0.0D;
          double d1 = 0.0D;
          int i = 0;
          for(;;)
          {
              if(i >= getItems().size()){
                  return new Envelope(d3, d1, d4, d2);
              }
              Coordinate localCoordinate = (Coordinate)getItems().get(i);
              double d6 = d3;
              double d5 = d4;
              if(i == 0)
              {
                  d6 = localCoordinate.getX();
                  d2 = localCoordinate.getY();
                  d5 = d6;
                  d1 = d2;
              }
              d3 = d6;
              if(d6 > localCoordinate.getX()){
                  d3 = localCoordinate.getX();
              }
              d4 = d5;
              if(d5 < localCoordinate.getX()){
                  d4 = localCoordinate.getX();
              }
              d5 = d2;
              if(d2 > localCoordinate.getY()){
                  d5 = localCoordinate.getY();
              }
              d2 = d1;
              if(d1 < localCoordinate.getY()){
                  d2 = localCoordinate.getY();
              }
              i+=1;
              d1 = d2;
              d2 = d5;
          }
      }
      
      public abstract Geometry Clone();
      
      public List<Coordinate> GetAllCoordinateList()
      {
          return getItems();
      }
      
      public boolean GetEdited()
      {
        return this._Edited;
      }
      
      public abstract lkGeoLayerType GetType();
      
      public abstract boolean HitTest(Coordinate paramCoordinate, double paramDouble);
      
      public boolean IsNull()
      {
          if(this._CoorList == null){}
          while(this._CoorList.size()==0){
              return true;
          }
          return false;
      }
      
      public void IsSimple(boolean paramBoolean)
      {
          this._IsSimple = paramBoolean;
      }
      
      public boolean IsSimple()
      {
        return this._IsSimple;
      }
      
      public abstract boolean Offset(double paramDouble1, double paramDouble2);
      
      public void SetAllCoordinateList(List<Coordinate> paramList)
      {
          setItems(paramList);
      }
      
      public void SetEdited(boolean paramBoolean)
      {
        this._Edited = paramBoolean;
      }
      
      public void SetNull()
      {
        this._CoorList = null;
      }
      
      public void UpdateCoordinate(double paramDouble1, double paramDouble2)
      {
          Iterator localIterator = getItems().iterator();
          for(;;)
          {
              if(!localIterator.hasNext())
              {
                  this._Envelope = null;
                  return;
              }
              Coordinate localCoordinate = (Coordinate)localIterator.next();
              localCoordinate.setX(localCoordinate.getX() + paramDouble1);
              localCoordinate.setY(localCoordinate.getY() + paramDouble2);
          }
          
      }
      
      public void UpdateEnvelope()
      {
          this._Envelope = CalEnvelope();
      }
      
      public Envelope getEnvelope()
      {
          if(this._Envelope == null){
              UpdateEnvelope();
          }
          return this._Envelope;
      }
      
      public String getID()
      {
        return this._ID;
      }
      
      public int getIndex()
      {
        return this._Index;
      }
      
      protected List<Coordinate> getItems()
      {
        if (this._CoorList == null) {
          this._CoorList = new ArrayList();
        }
        return this._CoorList;
      }
      
      public lkGeometryStatus getStatus()
      {
        return this._Status;
      }
      
      public ISymbol getSymbol()
      {
        return this._Symbol;
      }
      
      public String getTag()
      {
          return this._Tag;
      }
      
      public void setEnvelope(Envelope paramEnvelope)
      {
        this._Envelope = paramEnvelope;
      }
      
      public void setID(String paramString)
      {
        this._ID = paramString;
      }
      
      public void setIndex(int paramInt)
      {
        this._Index = paramInt;
      }
      
      protected void setItems(List<Coordinate> paramList)
      {
        this._CoorList = paramList;
      }
      
      public void setStatus(lkGeometryStatus paramlkGeometryStatus)
      {
        this._Status = paramlkGeometryStatus;
      }
      
      public void setSymbol(ISymbol paramISymbol)
      {
        this._Symbol = paramISymbol;
      }
      
      public void setTag(String paramString)
      {
        this._Tag = paramString;
      }
      
      public static class dd {}
    
    }
    View Code

     GridLayer.java 格网图层

    public class GridLayer {
        private Map Map = null;
        private List<Tile> _CacheList = new ArrayList();
        private String _GridDataFileName = "";
        private GridPad _GridPad = new GridPad(null);
        private boolean _IfLoadGrid = false;
        private List<Double> _LevelScale = new ArrayList();
        private OverMapSQLiteDataBase _SQLiteDB = null;
        private boolean _ShowGrid = true;
    
        public GridLayer(Map paramMap) {
            // TODO Auto-generated constructor stub
            this.Map = paramMap;
        }
        
        private int GetCurrentLevel(double paramDouble)
        {
            double d1 = 1.7976931348623157E+308D;
            int j = -1;
            int i = 0;
            for(;;)
            {
                if(i >= this._LevelScale.size()){
                    return j;
                }
                double d3 = Math.abs(((Double)this._LevelScale.get(i)).doubleValue() - paramDouble);
                double d2 = d1;
                if(d3 < d1)
                {
                    j = i;
                    d2 = d3;
                }
                i += 1;
                d1 = d2;
            }
        }
        
        private OverMapSQLiteDataBase getSQLiteDB()
        {
            if(this._SQLiteDB == null){
                this._SQLiteDB = new OverMapSQLiteDataBase();
            }
            return this._SQLiteDB;
        }
    
        public void FastRefresh() {
            // TODO Auto-generated method stub
            Iterator localIterator = this._CacheList.iterator();
            for(;;)
            {
                if(!localIterator.hasNext()){
                    return;
                }
                Log.d("GridLayer", "Refresh next");
                Tile localTile = (Tile)localIterator.next();
                PointF localPointF1 = this.Map.getViewConvert().MapToScreenF(localTile.LT_X, localTile.LT_Y);
                PointF localPointF2 = this.Map.getViewConvert().MapToScreenF(localTile.RB_X, localTile.RB_Y);
                this.Map.getDisplayGraphic().drawBitmap(localTile.TileBitmap, new Rect(0, 0, this._GridPad.TileSize,
                        this._GridPad.TileSize), new RectF(localPointF1.x, localPointF1.y, localPointF2.x,
                                localPointF2.y), null);
            }
        }
        
        public Envelope GetExtend()
        {
            if(this._IfLoadGrid){
                return this._GridPad.Extend;
            }
            return null;
        }
        
        public void Refresh()
        {
            if(!this._ShowGrid){Log.d("GridLayer", "Not Show Grid");}
            Log.d("GridLayer", "Show Grid");
            int n;
            Object localObject1;
            Object localObject2;
            Object localObject3;
            int i;
            int m;
            int i2;
            
            if(!this._IfLoadGrid)
            {
                Log.d("GridLayer", "Not Load Grid");
                return;
            }
            
            do
            {
                do
                {
                    /*
                    do
                    {
                        //return;
                    }while(!this._IfLoadGrid);
                    */
                    n = GetCurrentLevel(this.Map.ToMapDistance(1.0D));
                    localObject1 = this.Map.getExtend();
                    if (!this._GridPad.InCurrentView((Envelope)localObject1))
                    {
                        this._CacheList.clear();
                        return;
                    }
                    localObject2 = this._GridPad.CalGridPosition(((Double)this._LevelScale.get(n)).doubleValue(), ((Envelope)localObject1).getLeftTop());
                    localObject3 = this._GridPad.CalGridPosition(((Double)this._LevelScale.get(n)).doubleValue(), ((Envelope)localObject1).getRightBottom());
                    localObject1 = UUID.randomUUID().toString();
                    i = Integer.parseInt(localObject2.toString().split(",")[0]);
                    m = Integer.parseInt(localObject2.toString().split(",")[1]);
                    int i1 = Integer.parseInt(localObject3.toString().split(",")[0]);
                    i2 = Integer.parseInt(localObject3.toString().split(",")[1]);
                    localObject2 = new ArrayList();
                    if(i <= i1){
                        break;
                    }
                    i = this._CacheList.size() - 1;
                    if(i >= 0){
                        break;
                    }
                }while(((List)localObject2).size() == 0);
                localObject1 = "L" + (n + 1);
                localObject1 = "select SYS_GEO, LT_X, LT_Y, RB_X, RB_Y, SYS_RC from " + (String)localObject1 + " where SYS_RC in ('"  + 
                    Tools.JoinT("','", (List)localObject2) + "')";
                localObject1 = getSQLiteDB().Query((String)localObject1);
                //return;
            }while(localObject1 == null); //也许改为if?
            for(;;)
            {
                if(!((SQLiteDataReader)localObject1).Read())
                {
                    ((SQLiteDataReader)localObject1).Close();
                    //return;
                    int j = m;
                    if(j > i2)
                    {
                        i += 1;
                        break;
                    }
                    int k = 0;
                    localObject3 = this._CacheList.iterator();
                    for(;;)
                    {
                        if(!((Iterator)localObject3).hasNext())
                        {
                            if(k == 0){
                                ((List)localObject2).add(j + "-" + i);
                            }
                            j += 1;
                            break;
                        }
                        Tile localTile = (Tile)((Iterator)localObject3).next();
                        if(localTile.TileName.equals(n + "-" + j + "-" + i))
                        {
                            localTile.TileUniqueID = ((String)localObject1);
                            k = 1;
                        }
                    }
                    localObject3 = (Tile)this._CacheList.get(i);
                    if(!((Tile)localObject3).TileUniqueID.equals(localObject1)){
                        this._CacheList.remove(localObject3);
                    }
                    i -= 1;
                    break;
                }
                localObject2 = ((SQLiteDataReader)localObject1).GetString("SYS_RC");
                localObject3 = ((SQLiteDataReader)localObject1).GetBlob("SYS_GEO");
                double d1 = Double.parseDouble(((SQLiteDataReader)localObject1).GetString("LT_X"));
                double d2 = Double.parseDouble(((SQLiteDataReader)localObject1).GetString("LT_Y"));
                double d3 = Double.parseDouble(((SQLiteDataReader)localObject1).GetString("RB_X"));
                double d4 = Double.parseDouble(((SQLiteDataReader)localObject1).GetString("RB_Y"));
                Tile localTile = new Tile(null);
                localTile.LT_X = d1;
                localTile.LT_Y = d2;
                localTile.RB_X = d3;
                localTile.RB_Y = d4;
                localTile.TileName = (n + "-" + (String)localObject2);
                localTile.TileBitmap = BitmapFactory.decodeByteArray((byte[])localObject3, 0, ((byte[])localObject3).length);
                this._CacheList.add(localTile);
            }
        }
        
        public void SetGridDataFile(String paramString) //设置Grid数据文件
        {
            SQLiteDataReader paramString2;
            if(!Tools.ExistFile(paramString))
            {
                this._IfLoadGrid = false;
                this._CacheList.clear();
            }
            do
            {
                this._GridDataFileName = paramString;
                getSQLiteDB().setDatabaseName(this._GridDataFileName);
                this._IfLoadGrid = true;
                this._CacheList.clear();
                this._LevelScale.clear();
                paramString2 = getSQLiteDB().Query("select * from MapInfo");
            }while(paramString == null);
            if(!paramString2.Read())
            {
                paramString2.Close();
                return;
            }
            String str1 = paramString2.GetString("MaxLevel");
            String str2 = paramString2.GetString("Scale");
            int i = 1;
            for(;;)
            {
                if(i > Integer.parseInt(str1))
                {
                    this._GridPad.TileSize = Integer.parseInt(paramString2.GetString("TileSize"));
                    this._GridPad.SetExtend(Double.parseDouble(paramString2.GetString("Min_X")), Double.parseDouble(paramString2.GetString("Min_Y")),
                            Double.parseDouble(paramString2.GetString("Max_X")), Double.parseDouble(paramString2.GetString("Max_Y")));
                    break;
                }
                this._LevelScale.add(0, Double.valueOf(Double.parseDouble(str2)*Math.pow(2.0D, i - 1)));
                i += 1;
            }
        }
        
        public void SetShowGrid(boolean paramBoolean)
        {
            this._ShowGrid = paramBoolean;
            if(!this._ShowGrid){
                this._CacheList.clear();
            }
        }
        
        public class GridPad{
            public Envelope Extend;
            private double MaxX;
            private double MaxY;
            private double MinX;
            private double MinY;
            public int TileSize = 256;
            
            private GridPad(){}
            
            public GridPad(Object object) {
                // TODO Auto-generated constructor stub
            }
    
            public String CalGridPosition(double paramDouble, Coordinate paramCoordinate)
            {
                paramDouble = this.TileSize * paramDouble;
                int n = (int)((this.MaxX - this.MinX)/paramDouble) + 1;
                int m = (int)((this.MaxY - this.MinY)/paramDouble) + 1;
                int j = (int)((paramCoordinate.getX() - this.MinX)/paramDouble);
                int k = (int)((this.MaxY - paramCoordinate.getY())/paramDouble);
                int i = j;
                if(j < 0){
                    i = 0;
                }
                j = k;
                if(k < 0){
                    j = 0;
                }
                k = i;
                if(i > n){
                    k = n;
                }
                i = j;
                if(j > m){
                    i = m;
                }
                return k + "," + i;
            }
            
            public boolean InCurrentView(Envelope paramEnvelope)
            {
                return paramEnvelope.Intersect(this.Extend);
            }
            
            public void SetExtend(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4)
            {
                this.MinX = paramDouble1;
                this.MinY = paramDouble2;
                this.MaxX = paramDouble3;
                this.MaxY = paramDouble4;
                this.Extend = new Envelope(paramDouble1, paramDouble4, paramDouble3, paramDouble2);
            }
        }
    
        private class Tile
        {
            public double LT_X = 0.0D;
            public double LT_Y = 0.0D;
            public double RB_X = 0.0D;
            public double RB_Y = 0.0D;
            public Bitmap TileBitmap = null;
            public String TileName = "";
            public String TileUniqueID = "";
            
            private Tile(){}
    
            public Tile(Object object) {
                // TODO Auto-generated constructor stub
            }
        }
    }
    View Code

    v1_project_layer.java 工程图层类

    OverMap.java 覆盖地图类

    public class OverMap{
      private Map Map = null;
      private int OffsetX = 0;
      private int OffsetY = 0;
      private double[] _LevelScale = new double[21];
      private OverMapDownloader _OverMapDownloader = null;
      private lkOverMapType _OverMapType = lkOverMapType.enGoogle_Satellite;
      public boolean _PanRefresh = false;
      private OverMapSQLiteDataBase _SQLiteDB = null;
      private boolean _ShowGrid = false;
      private String _TableName = "";
      private Bitmap _TileScaleBitmap = null;
      private Canvas _TileScaleCanvas = null;
    }
    View Code

     OverMapDownloader.java 覆盖地图下载器

     GPSLocate.java GPS定位类

    public class GPSLocate {
        public boolean GPS_OpenClose = false;
        private GpsStatus.Listener gpsListener = new GpsStatus.Listener() { //GPS状态监听器
            
            @Override
            public void onGpsStatusChanged(int paramAnonymousInt) {
                // TODO Auto-generated method stub
                GPSLocate.this.m_GPSMap.UpdateGPSStatus(null);
            }
        };
        private final LocationListener locationListener = new LocationListener() //位置监听器
        {
            public void onLocationChanged(Location paramAnonymousLocation)
            {
                GPSLocate.this.m_Location = paramAnonymousLocation;
                GPSLocate.this.m_GPSMap.UpdateGPSStatus(GPSLocate.this.m_Location);
            }
            
            public void onProviderDisabled(String paramAnonymousString)
            {
                GPSLocate.this.m_GPSMap.GetGpsInfoManage().UpdateGPSStatus("不可用");
            }
            
            public void onProviderEnabled(String paramAnonymousString)
            {
                GPSLocate.this.m_GPSMap.GetGpsInfoManage().UpdateGPSStatus("可用");
            }
            
            public void onStatusChanged(String paramAnonymousString, int paramAnonymousInt, Bundle paramAnonymousBundle)
            {}
        };
        public Context m_Context;
        private GPSMap m_GPSMap = null;
        public LocationManager m_LTManager = null;
        public Location m_Location = null;
        public MapControl m_MapControl = null;
    
        public GPSLocate(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this.m_MapControl = paramMapControl;
            this.m_GPSMap = new GPSMap(this.m_MapControl);
            PubVar.m_GPSMap = this.m_GPSMap;
        }
        
        public boolean AlwaysFix()
        {
            if((this.m_LTManager == null)||(this.m_Location == null)){
                return false;
            }
            int i = 0;
            Iterator localIterator = this.m_LTManager.getGpsStatus(null).getSatellites().iterator();
            for(;;)
            {
                if(!localIterator.hasNext())
                {
                    if((i < 4)||(this.m_Location.getAccuracy() <= 0.0F) || (this.m_Location.getAccuracy() > 30.0F)){
                        break;
                    }
                    return true;
                }
                if(((GpsSatellite)localIterator.next()).usedInFix()){
                    i += 1;
                }
            }
            return GPS_OpenClose;
        }
    
        public boolean CloseGPS()
        {
            this.m_LTManager.removeUpdates(this.locationListener);
            this.m_LTManager.removeGpsStatusListener(this.gpsListener);
            this.GPS_OpenClose = false;
            this.m_GPSMap.UpdateGPSStatus(null);
            this.m_LTManager = null;
            return true;
        }
        
        public int GetLevelForAlwaysFix()
        {
            int i = 0;
            Iterator localIterator = this.m_LTManager.getGpsStatus(null).getSatellites().iterator(); //获取卫星数GpsSatellite
            
            /*
            do
            {
                if(!localIterator.hasNext()) //如果没有下一个
                {
                    this.m_Location.getAccuracy();
                    if(i!=0)
                    {
                        break;
                    }
                }
            }while(localIterator.hasNext());
            */
            
            for(;localIterator.hasNext();)
            {
                this.m_Location.getAccuracy();
                if(!((GpsSatellite)localIterator.next()).usedInFix()){ //如果不能用来Fix
                    break;
                }
                i += 1;
            }
            
            if(i < 12)
            {
                if((i>=1)&&(i<=4)){
                    return 1;
                }
                if((i>=5)&&(i<=7)){
                    return 2;
                }
                if((i>=8)&&(i<=11)){
                    return 3;
                }
            }
            else{
                return 4;
            }
            return 0;
            /*
            do
            {
                if(!localIterator.hasNext())
                {
                    this.m_Location.getAccuracy();
                    if(i != 0){
                        break;
                    }
                }
                if(!((GpsSatellite)localIterator.next()).usedInFix()){
                    break;
                }
                i += 1;
                if((i>=1)&&(i<=4)){
                    return 1;
                }
                if((i>=5)&&(i<=7)){
                    return 2;
                }
                if((i>=8)&&(i<=11)){
                    return 3;
                }
                break;
                //return 0;
            }while(i < 12);
            return 4;
            */
        }
        
        public boolean OpenGPS()
        {
            this.m_LTManager = ((LocationManager)this.m_Context.getSystemService(Context.LOCATION_SERVICE)); //位置管理器赋值 "gps"
            Object localObject;
            Log.d("GPSLocate", "After location manager");
            if(!this.m_LTManager.isProviderEnabled("gps")) //如果位置管理器没有gps开启
            {
                Log.d("GPSLocate", "open gps");
                localObject = new AlertDialog.Builder(PubVar.m_DoEvent.m_Context);
                ((AlertDialog.Builder)localObject).setTitle("系统提示");
                ((AlertDialog.Builder)localObject).setMessage("获取精确的位置服务,需在位置设置中打开GPS,是否需要打开设置界面?");
                ((AlertDialog.Builder)localObject).setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) {
                        // TODO Auto-generated method stub
                        Intent localIntent = new Intent("android.settings.LOCATION_SOURCE_SETTINGS");
                        PubVar.m_DoEvent.m_Context.startActivity(localIntent);
                        paramAnonymousDialogInterface.dismiss();
                    }
                });
                ((AlertDialog.Builder)localObject).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) {
                        // TODO Auto-generated method stub
                        paramAnonymousDialogInterface.dismiss();
                    }
                });
                ((AlertDialog.Builder)localObject).show();
                this.GPS_OpenClose = false;
                this.m_GPSMap.UpdateGPSStatus(null);
                return false;
            }//如果开启了的话
            localObject = new Criteria();
            ((Criteria)localObject).setAccuracy(Criteria.ACCURACY_FINE);
            ((Criteria)localObject).setAltitudeRequired(false);
            ((Criteria)localObject).setBearingRequired(false);
            ((Criteria)localObject).setCostAllowed(false);
            ((Criteria)localObject).setPowerRequirement(Criteria.POWER_LOW);
            this.m_LTManager.getBestProvider((Criteria)localObject, true);
            if(this.m_Location != null){
                this.m_GPSMap.UpdateGPSStatus(this.m_Location);
            }
            this.m_LTManager.requestLocationUpdates("gps", 1000L, 0.0F, this.locationListener);
            this.m_LTManager.addGpsStatusListener(this.gpsListener);
            this.GPS_OpenClose = true;
            this.m_GPSMap.UpdateGPSStatus(null);
            return true;
        }
        
        public float getAccuracy()
        {
            return this.m_Location.getAccuracy()/2.0F;
        }
        
        public String getGC()
        {
            return this.m_Location.getAltitude() + "0";
        }
        
        public Coordinate getGPSCoordinate()
        {
            return StaticObject.soProjectSystem.WGS84ToXY(this.m_Location.getLongitude(), this.m_Location.getLatitude(), 
                    this.m_Location.getAltitude());
        }
        
        public String getGPSDate()
        {
            Date localDate = new Date(this.m_Location.getTime() + 86400L);
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(localDate);
        }
        
        public String[] getGPSDateForPhotoFormat()
        {
            String[] arrayOfString = getGPSDate().split(" ");
            arrayOfString[0] = arrayOfString[0].replaceAll("-", ":");
            arrayOfString[1] = (arrayOfString[1].replaceAll(":", "/1,") + "/1");
            return arrayOfString;
        }
        
        public String getGPSSpeed()
        {
            float f = this.m_Location.getSpeed();
            return new DecimalFormat("0.0").format(f * 3.6F).toString();
        }
        
        public String getJWGPSCoordinate()
        {
            DecimalFormat localDecimalFormat = new DecimalFormat("#.00000000");
            return localDecimalFormat.format(this.m_Location.getLongitude()) + "," + localDecimalFormat.format(this.m_Location.getLatitude());
        }
    }
    View Code

    GPSMap.java

    v1_CGpsInfoManage.java GPS信息管理器

    public class v1_CGpsInfoManage {
        private ImageView _gps_close = null;
        private TextView _gps_jd = null;
        private ImageView _gps_open = null;
        private ImageView _gpsxh_0 = null;
        private ImageView _gpsxh_1 = null;
        private ImageView _gpsxh_2 = null;
        private ImageView _gpsxh_3 = null;
        private ImageView _gpsxh_4 = null;
        private ImageView _gpsxh_close = null;
        private TextView _mainheader_pos = null;
        private long m_BeforeTime = 0L;
        
        private String GetDDMM(double paramDouble)
        {
            int i = (int)Math.floor(paramDouble);
            double d = i;
            return i + "°" + Tools.ConvertToDigi(new StringBuilder(String.valueOf((paramDouble - d)*60.0D)).toString(), 6) + "″";
        }
        
        private String GetDDMMSS(double paramDouble)
        {
            int i = (int)Math.floor(paramDouble);
            paramDouble = (paramDouble - i) * 60.0D;
            int j = (int)Math.floor(paramDouble);
            String str = Tools.ConvertToDigi(String.valueOf((paramDouble - j) * 60.0D), 4);
            return i + "°" + j + "'" + str + "″";
        }
    
        public void SetHeaderViewBar(View paramView) {
            // TODO Auto-generated method stub
            this._mainheader_pos = (TextView)(paramView.findViewById(R.id.mainheader_pos)); //顶部坐标
            //Log.d("CGpsInfo", "afterpos");
            //this._mainheader_pos.setText(PubVar.m_HashMap.GetValueObject("Tag_System_TopXYFormat_Label").Value);
            this._mainheader_pos.setText("0,0,0");
            this._gps_jd = (TextView)paramView.findViewById(R.id.iv_gps_jd);
            this._gps_open = (ImageView)paramView.findViewById(R.id.iv_gpsopen);
            this._gps_close = (ImageView)paramView.findViewById(R.id.iv_gpsclose);
            this._gpsxh_close = (ImageView)paramView.findViewById(R.id.iv_gpsxh_close);
            this._gpsxh_0 = (ImageView)paramView.findViewById(R.id.iv_gpsxh0);
            this._gpsxh_1 = (ImageView)paramView.findViewById(R.id.iv_gpsxh1);
            this._gpsxh_2 = (ImageView)paramView.findViewById(R.id.iv_gpsxh2);
            this._gpsxh_3 = (ImageView)paramView.findViewById(R.id.iv_gpsxh3);
            this._gpsxh_4 = (ImageView)paramView.findViewById(R.id.iv_gpsxh4);
            SetInVisible();
            this._gps_close.setVisibility(View.VISIBLE);
            this._gpsxh_close.setVisibility(View.VISIBLE);
        }
        
        private void SetInVisible()
        {
            this._gps_open.setVisibility(View.GONE);
            this._gps_close.setVisibility(View.GONE);
            this._gpsxh_close.setVisibility(View.GONE);
            this._gpsxh_0.setVisibility(View.GONE);
            this._gpsxh_1.setVisibility(View.GONE);
            this._gpsxh_2.setVisibility(View.GONE);
            this._gpsxh_3.setVisibility(View.GONE);
            this._gpsxh_4.setVisibility(View.GONE);
        }
    
        public void UpdateGpsPosition(Coordinate paramCoordinate) {
            // TODO Auto-generated method stub
            String[] arrayOfString = PubVar.m_HashMap.GetValueObject("Tag_System_TopXYFormat_Code").Value.split("_");
            Object localObject2 = "";
            Object localObject1 = localObject2;
            if(arrayOfString[0].equals("GPS"))
            {
                localObject1 = localObject2;
                if(arrayOfString[1].equals("0")){
                    localObject1 = "E:" + GetDDMMSS(paramCoordinate.getX()) + " N:" + GetDDMMSS(paramCoordinate.getY());
                }
                if(arrayOfString[1].equals("1")){
                    localObject1 = "E:" + GetDDMMSS(paramCoordinate.getX()) + " N:" + GetDDMMSS(paramCoordinate.getY());
                }
                if(arrayOfString[1].equals("2")){
                    localObject1 = "E:" + Tools.ConvertToDigi(new StringBuilder(String.valueOf(paramCoordinate.getX())).toString(), 6) +
                            "° N:" + Tools.ConvertToDigi(new StringBuilder(String.valueOf(paramCoordinate.getY())).toString(), 6) + "°";
                }
            }
            if(arrayOfString[0].equals("PROJECT"))
            {
                localObject1 = StaticObject.soProjectSystem.WGS84ToXY(paramCoordinate.getX(), paramCoordinate.getY(), paramCoordinate.getZ());
                localObject1 = "X:" + Tools.ConvertToDigi(new StringBuilder(String.valueOf(((Coordinate)localObject1).getX())).toString(), 3)
                        + " Y:" + Tools.ConvertToDigi(new StringBuilder(String.valueOf(((Coordinate)localObject1).getY())).toString(), 3);
            }
            localObject2 = localObject1;
            if(arrayOfString[2].equals("1")){
                localObject2 = localObject1 + " H:" + Tools.ConvertToDigi(new StringBuilder(String.valueOf(paramCoordinate.getZ())).toString(), 2);
            }
            this._mainheader_pos.setText((CharSequence)localObject2);
        }
    
        public void UpdateGPSStatus(String paramString) {
            // TODO Auto-generated method stub
            Log.d("v1_CGpsInfoManage", "Into UpdateGPSStatus");
            SetInVisible();
            this._gps_jd.setText("0.00m");
            
            //for(;;)
            //{
                if(paramString.equals("关闭"))
                {
                    this._gps_close.setVisibility(View.VISIBLE);
                    this._gpsxh_close.setVisibility(View.VISIBLE);
                }
                if(paramString.equals("已定位"))
                {
                    this._gps_open.setVisibility(View.VISIBLE);
                    int i = PubVar.m_GPSLocate.GetLevelForAlwaysFix();
                    if(i == 0){
                        this._gpsxh_0.setVisibility(View.VISIBLE);
                    }
                    if(i == 1){
                        this._gpsxh_1.setVisibility(View.VISIBLE);
                    }
                    if(i == 2){
                        this._gpsxh_2.setVisibility(View.VISIBLE);
                    }
                    if(i == 3){
                        this._gpsxh_3.setVisibility(View.VISIBLE);
                    }
                    if (i == 4) {
                        this._gpsxh_4.setVisibility(View.VISIBLE);
                    }
                    this._gps_jd.setText(PubVar.m_GPSLocate.getAccuracy() + "m");
                }
                if(paramString.equals("定位中")) //实现闪烁的效果
                {
                    /*
                    new Thread()
                    {
                        private long m_BeforeTime;
                        //private ImageView _gps_close = (ImageView)paramView.findViewById(R.id.iv_gpsclose);
                        
                        //重写run方法;
                        public void run()
                        {
                        */
                    /*
                            for(;;)
                            {
                                long l = System.currentTimeMillis(); //当前时间
                                if(l - this.m_BeforeTime <= 2000L){
                                    this._gps_open.setVisibility(View.GONE);
                                    this._gps_close.setVisibility(View.VISIBLE);
                                }
                                else{
                                    this._gps_open.setVisibility(View.VISIBLE);
                                    this._gps_close.setVisibility(View.GONE);
                                    this.m_BeforeTime = l;
                                }
                            }
                    */
                        /*
                        }
                    }.start();
                    */
                    
                }
                else{
                    this._gpsxh_close.setVisibility(View.VISIBLE);
                    return;
                }
                
            //}
        }
    
    }
    View Code

     v1_CGpsLine.java GPS线类

     v1_GPSSet.java GPS信息显示

    public class v1_GPSSet {
      private v1_FormTemplate _Dialog = new v1_FormTemplate(PubVar.C);
      private Canvas m_BoundGraphics = null;
      private ICallback m_Callback = new ICallback()
      {
        public void OnClick(String paramAnonymousString, Object paramAnonymousObject)
        {
            if (paramAnonymousString.equals("退出"))
            {
                if(PubVar.m_GPSLocate.m_LTManager != null)
                {
                    PubVar.m_GPSLocate.m_LTManager.removeGpsStatusListener(v1_GPSSet.this.statusListener);
                    v1_GPSSet.this.m_SensorManager.unregisterListener(v1_GPSSet.this.sensorListener);
                }
                v1_GPSSet.this._Dialog.dismiss();
            }
            if(paramAnonymousString.equals("关闭GPS"))
            {
                PubVar.m_DoEvent.DoCommand(paramAnonymousString);
                v1_GPSSet.this.m_Callback.OnClick("退出", null);
            }
        }
      };
      private TextView m_GC = null;
      private Canvas m_Graphics = null;
      private ImageView m_ImgView = null;
      private ImageView m_ImgViewBound = null;
      private ImageView m_ImgViewSNR = null;
      private TextView m_JD = null;
      private TextView m_POS_JD = null;
      private TextView m_POS_ZT = null;
      private TextView m_SD = null;
      private Canvas m_SNRGraphics = null;
      private Sensor m_Sensor3 = null;
      private SensorManager m_SensorManager = null;
      private TextView m_WD = null;
      private float s_Angle = 0.0F;
      private SensorEventListener sensorListener = new SensorEventListener()
      {
        public void onAccuracyChanged(Sensor paramAnonymousSensor, int paramAnonymousInt){}
    
        @Override
        public void onSensorChanged(SensorEvent paramAnonymousSensorEvent) {
            // TODO Auto-generated method stub
            RotateAnimation paramAnonymousSensorEvent2;
            String paramAnonymousSensorEvent3;
            if(paramAnonymousSensorEvent.sensor.getType() == 3)
            {
                float f = paramAnonymousSensorEvent.values[0];
                paramAnonymousSensorEvent2 = new RotateAnimation(v1_GPSSet.this.s_Angle, -f, 1, 0.5F, 1, 0.5F);
                paramAnonymousSensorEvent2.setDuration(200L);
                v1_GPSSet.this._Dialog.findViewById(R.id.iv_compassarrow).startAnimation(paramAnonymousSensorEvent2);
                v1_GPSSet.this.s_Angle = (-f);
                int i = (int)f;
                Object localObject = "";
                paramAnonymousSensorEvent = (SensorEvent)localObject;
                if(i > 335)
                {
                    paramAnonymousSensorEvent = (SensorEvent)localObject;
                    if(i < 385){
                        paramAnonymousSensorEvent3 = "北 " + i + "° ";
                    }
                }
                localObject = paramAnonymousSensorEvent;
                if(i > 65)
                {
                    localObject = paramAnonymousSensorEvent;
                    if(i < 115){
                        localObject = "东 " + i + "° ";
                    }
                }
                paramAnonymousSensorEvent = (SensorEvent)localObject;
                if(i > 155)
                {
                    paramAnonymousSensorEvent = (SensorEvent)localObject;
                    if (i < 205) {
                        paramAnonymousSensorEvent3 = "南 " + i + "°";
                      }
                }
                localObject = paramAnonymousSensorEvent;
                if (i > 245)
                {
                  localObject = paramAnonymousSensorEvent;
                  if (i < 295) {
                    localObject = "西 " + i + "°";
                  }
                }
                paramAnonymousSensorEvent = (SensorEvent)localObject;
                if (i > 20)
                {
                  paramAnonymousSensorEvent = (SensorEvent)localObject;
                  if (i < 70) {
                    paramAnonymousSensorEvent3 = "东北 " + i + "°";
                  }
                }
                localObject = paramAnonymousSensorEvent;
                if (i > 110)
                {
                  localObject = paramAnonymousSensorEvent;
                  if (i < 160) {
                    localObject = "东南 " + i + "°";
                  }
                }
                paramAnonymousSensorEvent = (SensorEvent)localObject;
                if (i > 200)
                {
                  paramAnonymousSensorEvent = (SensorEvent)localObject;
                  if (i < 250) {
                    paramAnonymousSensorEvent3 = "西南 " + i + "°";
                  }
                }
                localObject = paramAnonymousSensorEvent;
                if (i > 290)
                {
                  localObject = paramAnonymousSensorEvent;
                  if (i < 340) {
                    localObject = "西北 " + i + "°";
                  }
                }
                if (localObject != "") {
                    Tools.SetTextViewValueOnID(v1_GPSSet.this._Dialog, R.id.tv_compassangle, (String)localObject);
                  }
            }
        }
          
      };
      
      private GpsStatus.Listener statusListener = null;
      
      public v1_GPSSet()
      {
          this._Dialog.SetOtherView(R.layout.v1_gpsset);
          this._Dialog.SetCallback(this.m_Callback);
          this._Dialog.ReSetSize(1.0F, 0.96F);
          this._Dialog.SetCaption("GPS信息");
          this._Dialog.SetButtonInfo("1," + R.drawable.v1_closegps + ",关闭GPS ,关闭GPS", this.m_Callback);
          this.m_SD = ((TextView)this._Dialog.findViewById(R.id.tv_sd)); //
          this.m_POS_JD = ((TextView)this._Dialog.findViewById(R.id.tv_pos_jd)); //
          this.m_POS_ZT = ((TextView)this._Dialog.findViewById(R.id.tv_pos_zt)); //
          this.m_JD = ((TextView)this._Dialog.findViewById(R.id.tv_jd)); //
          this.m_WD = ((TextView)this._Dialog.findViewById(R.id.tv_wd)); //
          this.m_GC = ((TextView)this._Dialog.findViewById(R.id.tv_gc)); //
          this.m_ImgView = ((ImageView)this._Dialog.findViewById(R.id.iv_gps)); //imageview_gps
          this.m_ImgViewBound = ((ImageView)this._Dialog.findViewById(R.id.iv_gps2)); //imageview_gps2
          this.m_ImgViewSNR = ((ImageView)this._Dialog.findViewById(R.id.iv_snr)); //
          this.m_ImgView.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View paramAnonymousView) {
                // TODO Auto-generated method stub
                ((ViewFlipper)v1_GPSSet.this._Dialog.findViewById(R.id.viewFlipper1)).showPrevious();
            }
        });
        this.m_ImgViewBound.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View paramAnonymousView) {
                // TODO Auto-generated method stub
                ((ViewFlipper)v1_GPSSet.this._Dialog.findViewById(R.id.viewFlipper1)).showPrevious();
            }
        });
        this.m_SensorManager = ((SensorManager)PubVar.m_DoEvent.m_Context.getSystemService(Context.SENSOR_SERVICE)); //传感器管理器 "sensor"
        this.m_Sensor3 = this.m_SensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //加速器
        this.m_SensorManager.registerListener(this.sensorListener, this.m_Sensor3, SensorManager.SENSOR_DELAY_GAME);//1
      }
      
      private void CreateLayerOut() //创建界面
      {
          Object localObject1 = Bitmap.createBitmap(this.m_ImgViewSNR.getMeasuredWidth(), this.m_ImgViewSNR.getMeasuredHeight(),
                  Bitmap.Config.ARGB_8888); //星历信息
          this.m_ImgViewSNR.setImageBitmap((Bitmap)localObject1);
          this.m_SNRGraphics = new Canvas((Bitmap)localObject1); //星历canvas
          localObject1 = (LinearLayout)this._Dialog.findViewById(R.id.imageControl);
          Object localObject2 = Bitmap.createBitmap(((LinearLayout)localObject1).getMeasuredWidth(), ((LinearLayout)localObject1).getMeasuredHeight(),
                  Bitmap.Config.ARGB_8888);
          this.m_ImgView.setImageBitmap((Bitmap)localObject2); //imageview_gps设置图像
          this.m_Graphics = new Canvas((Bitmap)localObject2); //imageview_gps的canvas
          localObject2 = this._Dialog.findViewById(R.id.iv_compassarrow); //
          RelativeLayout.LayoutParams localLayoutParams = new RelativeLayout.LayoutParams(((View)localObject2).getWidth(), ((View)localObject2).getHeight());
          localLayoutParams.leftMargin = (this.m_Graphics.getWidth()/2 - ((View)localObject2).getWidth()/2);
          localLayoutParams.topMargin = (this.m_Graphics.getHeight()/2 - ((View)localObject2).getHeight()/2);
          ((View)localObject2).setLayoutParams(localLayoutParams);
          localObject1 = Bitmap.createBitmap(((LinearLayout)localObject1).getMeasuredWidth(), ((LinearLayout)localObject1).getMeasuredHeight(),
                  Bitmap.Config.ARGB_8888);
          this.m_ImgViewBound.setImageBitmap((Bitmap)localObject1);
          this.m_BoundGraphics = new Canvas((Bitmap)localObject1);
          Refresh(); //刷新
          this.statusListener = new GpsStatus.Listener() //GPS状态监听
          {
    
            @Override
            public void onGpsStatusChanged(int paramAnonymousInt) {
                // TODO Auto-generated method stub
                v1_GPSSet.this.m_ImgView.invalidate();
                switch(paramAnonymousInt)
                {
                default:
                    v1_GPSSet.this.Refresh();
                    return;
                }
                //return;
            }
          };
          if(PubVar.m_GPSLocate == null){}
          while(PubVar.m_GPSLocate.m_LTManager == null){
              return;
          }
          PubVar.m_GPSLocate.m_LTManager.addGpsStatusListener(this.statusListener);
      }
      
      private void DrawBound(Iterable<GpsSatellite> paramIterable, int paramInt)
      {
          float f1 = this.m_BoundGraphics.getHeight(); //高度
          float f2 = this.m_BoundGraphics.getWidth(); //宽度
          int i = 1;
          paramInt = 0;
          Object localObject = paramIterable.iterator();
          
          int paramIterable2;
          String paramIterable3;
          Paint localPaint2 = new Paint();
          localPaint2.setStyle(Paint.Style.STROKE);
          localPaint2.setAntiAlias(true);
          localPaint2.setColor(Color.BLUE); //parseColor("#1e1e5a")
          Paint localPaint1 = new Paint();
          localPaint1.setColor(Color.RED);
          localPaint1.setAntiAlias(true);
          localObject = Typeface.create("宋体", Typeface.BOLD);
          localPaint1.setTextSize(20.0F);
          localPaint1.setTypeface((Typeface)localObject);
          localPaint1.setAntiAlias(true);
          float f3 = f1/8.0F;
          this.m_BoundGraphics.drawLine(30.0F, f1 - 40.0F, f2 - 30.0F, f1 - 40.0F, localPaint2);
          this.m_BoundGraphics.drawLine(30.0F, 40.0F + f3, 30.0F, f1 - 40.0F, localPaint2);
          localObject = new DashPathEffect(new float[]{5.0F, 5.0F, 5.0F, 5.0F}, 1.0F);
          localPaint2.setColor(Color.GREEN);
          localPaint2.setPathEffect((PathEffect)localObject);
          /*
          for(;;)
          {
              if (!((Iterator)localObject).hasNext())
              {
                return;
              }
              
          }
          */
          
          for(;;)
          {
              
              if(!((Iterator)localObject).hasNext())
              {
                  break;
              }
              GpsSatellite localGpsSatellite = (GpsSatellite)((Iterator)localObject).next();
              f2 = localGpsSatellite.getSnr() * f3 / 10.0F;
              if(localGpsSatellite.getSnr() > 40.0F){
                  f2 = 40.0F * f3 / 10.0F + (localGpsSatellite.getSnr() - 40.0F) * f3 / 25.0F;
              }
              float f4 = paramInt * f1 + 30.0F + paramInt;
              float f5 = this.m_BoundGraphics.getHeight() - 40.0F;
              float f6 = paramInt;
              float f7 = paramInt;
              f2 = this.m_BoundGraphics.getHeight() - 40.0F - f2;
              localPaint2.setColor(GetGpsSatelliteColor(localGpsSatellite));
              this.m_BoundGraphics.drawRect(f4, f2, f6*f1 + 30.0F + f7 + f1, f5, localPaint2);
              paramIterable2 = (int)localGpsSatellite.getSnr();
              this.m_BoundGraphics.drawText(String.valueOf(paramIterable2), (f1 - localPaint1.measureText(String.valueOf(paramIterable2)))/2.0F + f4, 
                      f2 - 2.0F, localPaint1);
              paramIterable3 = "G" + localGpsSatellite.getPrn();
              if(localGpsSatellite.getPrn() > 32){
                  paramIterable3 = "R" + localGpsSatellite.getPrn();
              }
              this.m_BoundGraphics.drawText(paramIterable3, (f1 - localPaint1.measureText(paramIterable3))/2.0F + f4, 
                      localPaint1.getTextSize() + f5, localPaint1);
              paramInt += 1;
              i += 1;
          }
          
          
          if(i > 4)
          {
              localPaint2 = new Paint();
              localPaint2.setStyle(Paint.Style.FILL);
              localPaint2.setAntiAlias(true);
              f1 = (f2 - 2.0F * 30.0F)/11.0F;
              if(paramInt > 11){
                  f1 = f2/paramInt;
              }
              //paramInt = 0;
              //localObject = paramIterable.iterator();
              this.m_BoundGraphics.drawLine(30.0F, f1 - i * f3 - 40.0F, f2 - 30.0F, f1 - i * f3 - 40.0F, localPaint2);
              this.m_BoundGraphics.drawText(String.valueOf(i * 10), 3.0F, f1 - i * f3 - 40.0F + 5.0F, localPaint1);
              return;
          }
          
          
      }
      
      private void DrawCompass(PointF paramPointF, float paramFloat) //绘制指北针
      {
          Paint localPaint1 = new Paint();
          localPaint1.setStyle(Paint.Style.FILL);
          localPaint1.setColor(Color.parseColor("#1e1e5a"));
          localPaint1.setAntiAlias(true);
          this.m_Graphics.drawCircle(paramPointF.x, paramPointF.y, paramFloat, localPaint1);
          localPaint1.setStyle(Paint.Style.STROKE);
          localPaint1.setColor(Color.GREEN);
          localPaint1.setPathEffect(new DashPathEffect(new float[]{5.0F, 5.0F, 5.0F, 5.0F}, 1.0F));
          this.m_Graphics.drawCircle(paramPointF.x, paramPointF.y, paramFloat/3.0F, localPaint1);
          this.m_Graphics.drawCircle(paramPointF.x, paramPointF.y, 2.0F * paramFloat/3.0F, localPaint1);
          Paint localPaint2 = new Paint();
          localPaint2.setAntiAlias(true);
          localPaint2.setTypeface(Typeface.create("宋体", 0));
          localPaint2.setAntiAlias(true);
          int i = 0;
          for(;;)
          {
              if(i > 330){
                  return;
              }
              float f4 = (float)(i * 3.141592653589793D / 180.0D);
              float f1 = (float)(Math.cos(f4) * paramFloat + paramPointF.x);
              float f2 = (float)(paramPointF.y - Math.sin(f4) * paramFloat);
              float f3 = (float)(Math.cos(f4) * 2.7D * paramFloat / 3.0D + paramPointF.x);
              f4 = (float)(paramPointF.y - Math.sin(f4) * 2.7D * paramFloat / 3.0D);
              this.m_Graphics.drawLine(paramPointF.x, paramPointF.y, f1, f2, localPaint1);
              int k = 90 - i;
              int j = k;
              if(k < 0){
                  j = k + 360;
              }
              String str = j + "° ";
              localPaint2.setTextSize(20.0F);
              localPaint2.setColor(Color.parseColor("#ded5d5"));
              if(j == 0)
              {
                  str = "北";
                  localPaint2.setColor(Color.RED);
                  localPaint2.setTextSize(localPaint2.getTextSize() * 1.5F);
              }
              if(j == 90)
              {
                  str = "东";
                  localPaint2.setColor(Color.GREEN);
                  localPaint2.setTextSize(localPaint2.getTextSize() * 1.5F);
              }
              if(j == 180)
              {
                  str = "南";
                  localPaint2.setColor(Color.BLUE);
                  localPaint2.setTextSize(localPaint2.getTextSize() * 1.5F);
              }
              if(j == 270)
              {
                  str = "西";
                  localPaint2.setColor(Color.CYAN);
                  localPaint2.setTextSize(localPaint2.getTextSize() * 1.5F);
              }
              this.m_Graphics.drawText(str, f3 - localPaint2.measureText(str)/2.0F, f4, localPaint2);
              i += 30;
          }
      }
      
      private void DrawGPSSatellite(GpsSatellite paramGpsSatellite, PointF paramPointF, float paramFloat) //绘制GPS卫星
      {
          float f2 = 90.0F - paramGpsSatellite.getAzimuth();
          float f1 = f2;
          Paint paramPointF2;
          Typeface paramPointF3;
          String paramPointF4;
          if(f2 < 0.0F){
              f1 = f2 + 360.0F;
          }
          f1 = (float)(f1 * 3.141592653589793D / 180.0D);
          f2 = paramGpsSatellite.getElevation() * paramFloat / 90.0F;
          paramFloat = (float)(Math.cos(f1) * f2 + paramPointF.x);
          f1 = (float)(paramPointF.y - Math.sin(f1) * f2);
          paramPointF2 = new Paint();
          paramPointF2.setStyle(Paint.Style.FILL);
          paramPointF2.setColor(GetGpsSatelliteColor(paramGpsSatellite));
          paramPointF2.setAntiAlias(true);
          this.m_Graphics.drawCircle(paramFloat, f1, 10.0F, paramPointF2);
          Paint localPaint = new Paint();
          localPaint.setColor(Color.BLUE);
          localPaint.setAntiAlias(true);
          paramPointF3 = Typeface.create("宋体", Typeface.BOLD);
          localPaint.setTextSize(20.0F);
          localPaint.setTypeface(paramPointF3);
          localPaint.setAntiAlias(true);
          paramPointF4 = "G" + paramGpsSatellite.getPrn();
          if(paramGpsSatellite.getPrn() > 32){
              paramPointF4 = "R" + paramGpsSatellite.getPrn();
          }
          this.m_Graphics.drawText(paramPointF4, paramFloat - localPaint.measureText(paramPointF4)/2.0F, f1 + 10.0F + 20.0F,
                  localPaint);
      }
      
      private void DrawSNR(float paramFloat1, float paramFloat2) //绘制SNR
      {
          Paint localPaint1 = new Paint();
          localPaint1.setStyle(Paint.Style.FILL);
          localPaint1.setAntiAlias(true);
          Paint localPaint2 = new Paint();
          localPaint2.setColor(Color.RED);
          localPaint2.setAntiAlias(true);
          Typeface localTypeface = Typeface.create("宋体", Typeface.BOLD);
          localPaint2.setTextSize(20.0F);
          localPaint2.setTypeface(localTypeface);
          localPaint2.setAntiAlias(true);
          localPaint1.setColor(GetGpsSatelliteColor(5.0F));
          this.m_SNRGraphics.drawRect(0.0F, 0.0F, paramFloat1/10.0F, paramFloat2/2.0F, localPaint1);
          this.m_SNRGraphics.drawText("00", 0.0F - localPaint2.measureText("00")/2.0F, paramFloat2 / 2.0F + 20.0F, localPaint2);
          localPaint1.setColor(GetGpsSatelliteColor(15.0F));
          this.m_SNRGraphics.drawRect(paramFloat1/10.0F, 0.0F, 2.0F * paramFloat1/10.0F, paramFloat2/2.0F, localPaint1);
          this.m_SNRGraphics.drawText("10", paramFloat1/10.0F-localPaint2.measureText("10")/2.0F, paramFloat2/2.0F+20.0F, localPaint2);
          localPaint1.setColor(GetGpsSatelliteColor(25.0F));
          this.m_SNRGraphics.drawRect(2.0F * paramFloat1 / 10.0F, 0.0F, 3.0F * paramFloat1 / 10.0F, paramFloat2 / 2.0F, localPaint1);
          this.m_SNRGraphics.drawText("20", 2.0F * paramFloat1 / 10.0F - localPaint2.measureText("20") / 2.0F, paramFloat2 / 2.0F + 
                  20.0F, localPaint2);
          localPaint1.setColor(GetGpsSatelliteColor(35.0F));
          this.m_SNRGraphics.drawRect(3.0F * paramFloat1 / 10.0F, 0.0F, 4.0F * paramFloat1 / 10.0F, paramFloat2 / 2.0F, localPaint1);
          this.m_SNRGraphics.drawText("30", 3.0F * paramFloat1 / 10.0F - localPaint2.measureText("30") / 2.0F, paramFloat2 / 2.0F + 
                  20.0F, localPaint2);
          localPaint1.setColor(GetGpsSatelliteColor(50.0F));
          this.m_SNRGraphics.drawRect(4.0F * paramFloat1 / 10.0F, 0.0F, paramFloat1, paramFloat2 / 2.0F, localPaint1);
          this.m_SNRGraphics.drawText("40", 4.0F * paramFloat1 / 10.0F - localPaint2.measureText("40")/2.0F, paramFloat2/2.0F+ 
                  20.0F, localPaint2);
      }
      
      private void DrawSateNumber(Canvas paramCanvas, int paramInt1, int paramInt2) //绘制卫星数
      {
          Paint localPaint = new Paint();
          localPaint.setColor(Color.parseColor("#ded5d5"));
          localPaint.setAntiAlias(true);
          Typeface localTypeface = Typeface.create("宋体", 0);
          localPaint.setTextSize(20.0F);
          localPaint.setTypeface(localTypeface);
          localPaint.setAntiAlias(true);
          localPaint.setColor(Color.RED);
          paramCanvas.drawText("可见卫星数", 10.0F, 0.0F + 20.0F, localPaint);
          paramCanvas.drawText("解算卫星数", paramCanvas.getWidth() - localPaint.measureText("解算卫星数") - 10.0F, 0.0F + 20.0F, localPaint);
          localPaint.setTextSize(localPaint.getTextSize() * 2.0F);
          paramCanvas.drawText(paramInt1 + "颗", 10.0F, localPaint.getTextSize() + 20.0F, localPaint);
          paramCanvas.drawText(paramInt2 + "颗", paramCanvas.getWidth() - localPaint.measureText(paramInt2 + "颗") - 10.0F,
                  localPaint.getTextSize() + 20.0F, localPaint);
      }
      
      private int GetGpsSatelliteColor(float paramFloat) //获取GPS卫星颜色
      {
          int i = Color.argb(255, 255, 0, 0);
          int j = Color.argb(255, 255, 129, 0);
          int k = Color.argb(255, 255, 255, 0);
          int m = Color.argb(255, 222, 255, 0);
          int n = Color.argb(255, 0, 255, 0);
          if((paramFloat >= 0.0F) && (paramFloat <= 10.0F))
          {
              return i;
          }
          if((paramFloat > 10.0F) && (paramFloat <= 20.0F)){
              return j;
          }
          if((paramFloat > 20.0F) && (paramFloat <= 30.0F)){
              return k;
          }
          if((paramFloat > 30.0F) && (paramFloat <= 40.0F)){
              return m;
          }
          if(paramFloat > 40.0F){
              return n;
          }
          return 0;
      }
      
      private int GetGpsSatelliteColor(GpsSatellite paramGpsSatellite)
      {
          int i = Color.argb(255, 197, 194, 197);
          if(!paramGpsSatellite.usedInFix()){
              return i;
          }
          return GetGpsSatelliteColor(paramGpsSatellite.getSnr());
      }
      
      private void Refresh() //刷新
      {
          Log.d("v1_GPSSet", "Into Refresh");
          this.m_Graphics.drawColor(Color.GRAY); //图像
          this.m_SNRGraphics.drawColor(Color.BLUE); //星历图像
          this.m_BoundGraphics.drawColor(Color.YELLOW); //绑定图像
          if(PubVar.m_GPSLocate == null){}
          Object localObject1 = PubVar.m_GPSLocate.m_LTManager.getGpsStatus(null);
          if(localObject1 == null){
              return;
          }
          int j = 0;
          int i = 0;
          Iterable localIterable = ((GpsStatus)localObject1).getSatellites(); //获取卫星
          //Log.d("v1_GPSSet", "Satellite:" + localIterable)
          localObject1 = localIterable.iterator();
          Object localObject2 = null;
          float f = 0;
          Log.d("v1_GPSSet", "Before First For");
          for(;;)
          {
              if(!((Iterator)localObject1).hasNext())
              {
                  if(PubVar.m_GPSLocate.m_Location != null)
                  {
                      this.m_SD.setText("速度:" + PubVar.m_GPSLocate.getGPSSpeed() + " km/h"); //速度
                      this.m_GC.setText("高程:" + PubVar.m_GPSLocate.getGC() + " 米"); //高程
                      this.m_POS_JD.setText("精度:" + PubVar.m_GPSLocate.getAccuracy() + " 米"); //精度
                      localObject2 = this.m_POS_ZT;
                      StringBuilder localStringBuilder = new StringBuilder("状态:");
                      if(!PubVar.m_GPSLocate.AlwaysFix()){
                          localObject1 = "未定位";
                          break;
                      }
                      localObject1 = "已定位";
                      ((TextView)localObject2).setText((String)localObject1);
                      this.m_JD.setText("经度:" + PubVar.m_GPSLocate.getJWGPSCoordinate().split(",")[0]);
                      this.m_WD.setText("纬度:" + PubVar.m_GPSLocate.getJWGPSCoordinate().split(",")[1]);
                  }
                  Log.d("v1_GPSSet", "Before Draw SNR");
                  DrawSNR(this.m_ImgViewSNR.getMeasuredWidth(), this.m_ImgViewSNR.getMeasuredHeight()); //绘制星历信息*
                  Log.d("v1_GPSSet", "After Draw SNR");
                  f = Math.min(this.m_ImgView.getMeasuredWidth(), this.m_ImgView.getMeasuredHeight())/2.0F - 10.0F;
                  localObject1 = new PointF(this.m_ImgView.getMeasuredWidth()/2, this.m_ImgView.getMeasuredHeight()/2);
                  DrawCompass((PointF)localObject1, f); //绘制指北针
                  Log.d("v1_GPSSet", "After Draw Compass");
                  DrawSateNumber(this.m_Graphics, i, j); //绘制星历数
                  Log.d("v1_GPSSet", "After Draw SateNumber");
                  localObject2 = localIterable.iterator();
                  Log.d("v1_GPSSet", "First For Ends");
                  break;
              }
              localObject2 = (GpsSatellite)((Iterator)localObject1).next();
              int k = i + 1;
              i = k;
              if(!((GpsSatellite)localObject2).usedInFix()){
                  break;
              }
              j += 1;
              i = k;
              
          }
          Log.d("v1_GPSSet", "Before Second For");
          /*
          for(;;)
          {
              if(!((Iterator)localObject2).hasNext())
              {
                  Log.d("v1_GPSSet", "Before DrawBound");
                  //DrawBound(localIterable, i);
                  Log.d("v1_GPSSet", "After DrawBound");
                 //DrawSateNumber(this.m_BoundGraphics, i, j);
                  Log.d("v1_GPSSet", "Refresh Ends");
                  return;
              }
              Log.d("v1_GPSSet", "Before Draw Satellite");
              DrawGPSSatellite((GpsSatellite)((Iterator)localObject2).next(), (PointF)localObject1, f);
              Log.d("v1_GPSSet", "After Draw Satellite");
          }
          */
      }
      
      public void ShowDialog()
      {
          ///*
          this._Dialog.setOnShowListener(new DialogInterface.OnShowListener() { //显示监听
            
            @Override
            public void onShow(DialogInterface paramAnonymousDialogInterface) {
                // TODO Auto-generated method stub
                v1_GPSSet.this.CreateLayerOut(); //绘制界面
            }
        });
        //*/
        this._Dialog.show();
      }
    }
    View Code

     Select.java 选择

     ZoomIn.java 放大

    public class ZoomIn implements ICommand, IOnPaint { //放大
         private TrackRectangle TR_X;
         private ICommand _Command;
         private MapControl _MapControl = null;
    
        public ZoomIn(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this.TR_X = new TrackRectangle(paramMapControl); //追踪矩形
            this._Command = this.TR_X;
            this._MapControl = paramMapControl;
        }
    
    
        @Override
        public void MouseDown(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseDown(paramMotionEvent);
        }
    
        @Override
        public void MouseMove(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseMove(paramMotionEvent);
        }
    
        @Override
        public void MouseUp(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseUp(paramMotionEvent);
            if(this.TR_X.getTrackEnvelope() == null){
                this.TR_X.setTrackEnvelope(this._MapControl.getMap().getExtend().Scale(0.5D));
            }
            else{
                this._MapControl.getMap().setExtend(this.TR_X.getTrackEnvelope());
            }
            for(;;)
            {
                this._MapControl.getMap().Refresh();
                return;
            }
        }
    
        @Override
        public void OnPaint(Canvas paramCanvas)
        {
            this.TR_X.OnPaint(paramCanvas);
        }
    }
    View Code

    ZoomOut.java 缩小

    public class ZoomOut implements ICommand {
        private TrackRectangle TR_X;
        private ICommand _Command;
        private MapControl _MapControl = null;
    
        public ZoomOut(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this.TR_X = new TrackRectangle(paramMapControl);
            this._Command = this.TR_X;
            this._MapControl = paramMapControl;
        }
    
        @Override
        public void MouseDown(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseDown(paramMotionEvent);
        }
    
        @Override
        public void MouseMove(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseMove(paramMotionEvent);
        }
    
        @Override
        public void MouseUp(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._Command.MouseUp(paramMotionEvent);
            if(this.TR_X.getTrackEnvelope() == null){
                this._MapControl.getMap().setExtend(this._MapControl.getMap().getExtend().Scale(2.0D));
            }
            else{
                this._MapControl.getMap().setExtend(this._MapControl.getMap().getExtend().Scale
                        (this._MapControl.getMap().getExtend().Factor(this.TR_X.getTrackEnvelope())));
            }
            for(;;)
            {
                this._MapControl.getMap().Refresh();
                return;
            }
        }
    
    }
    View Code

    ZoomInOutPan.java 手势缩放平移

    public class ZoomInOutPan implements ICommand, IOnPaint {
        boolean FirstMouseMove = true;
        private Bitmap MaskImage = null;
        private MapControl _MapControl = null;
        private Pan _Pan = null;
        private boolean _PanScreen = false;
        private float m_FromDist = 0.0F;
        private PointF m_ScaleStartPoint = null;
        private float m_ToDist = 0.0F;
        private RectF m_ToRect = null;
    
        public ZoomInOutPan(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this._MapControl = paramMapControl;
            this._Pan = new Pan(paramMapControl);
        }
        
        private float GetScaleDist(MotionEvent paramMotionEvent)
        {
            float f1 = Math.min(paramMotionEvent.getX(0 ), paramMotionEvent.getX(1)); //MotionEvent.ACTION_DOWN MotionEvent.ACTION_UP
            float f2 = Math.min(paramMotionEvent.getY(0), paramMotionEvent.getY(1));
            float f3 = Math.max(paramMotionEvent.getX(0), paramMotionEvent.getX(1));
            float f4 = Math.max(paramMotionEvent.getY(0), paramMotionEvent.getY(1));
            return Float.valueOf(String.valueOf(Math.sqrt((f1 - f3) * (f1 - f3) + (f2 - f4) * (f2 - f4)))).floatValue();
        }
    
        @Override
        public void MouseDown(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this.FirstMouseMove = true;
            if(paramMotionEvent.getPointerCount() > 1)
            {
                this._PanScreen = false;
                this._MapControl.getMap().setInvalidMap(true);
                Bitmap localBitmap = this._MapControl.getMap().bp;
                this.MaskImage = this._MapControl.getMap().MaskBitmap;
                this.m_FromDist = GetScaleDist(paramMotionEvent);
                this.m_ToRect = null;
                this.m_ScaleStartPoint = new PointF((paramMotionEvent.getX(0) + paramMotionEvent.getX(1))/2.0F, (paramMotionEvent.getY(0) +
                        paramMotionEvent.getY(1))/2.0F);
                return;
            }
            this._Pan.MouseDown(paramMotionEvent);
            this._PanScreen = true;
        }
    
        @Override
        public void MouseMove(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            if((paramMotionEvent.getPointerCount()<=1)&&(this._PanScreen))
            {
                if(this.FirstMouseMove)
                {
                    this._Pan.MouseDown(paramMotionEvent);
                    this.FirstMouseMove = false;
                }
                this._Pan.MouseMove(paramMotionEvent);
            }
            while((paramMotionEvent.getPointerCount()<=1)||(this._PanScreen)){
                return;
            }
            this.m_ToDist = GetScaleDist(paramMotionEvent);
            if((this.m_FromDist != 0.0F)&&(this.m_ToDist == 0.0F)){}
            float f1 = this.m_ToDist/this.m_FromDist;
            if(this.MaskImage != null)
            {
                float f2 = this.MaskImage.getWidth()/2;
                f2 = this.MaskImage.getHeight() / 2;
                f2 = this.MaskImage.getWidth();
                float f3 = this.MaskImage.getHeight();
                float f4 = -(f1 - 1.0F) * this.m_ScaleStartPoint.x;
                float f5 = -(f1 - 1.0F) * this.m_ScaleStartPoint.y;
                this.m_ToRect = new RectF(f4, f5, f4 + f2 * f1, f5 + f3 * f1);
            }
            this._MapControl.invalidate();
        }
    
        @Override
        public void MouseUp(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            if((paramMotionEvent.getPointerCount() <= 1) && (this._PanScreen)){
                this._Pan.MouseUp(paramMotionEvent);
            }
            while((paramMotionEvent.getPointerCount() <= 1)&&(this._PanScreen)){
                return;
            }
            if(this.MaskImage != null){
                this.MaskImage = null;
            }
            float f = 0;
            
            for(;;)
            {
                if(this.m_ToRect != null)
                {
                    if((this.m_FromDist != 0.0F)&&(this.m_ToDist == 0.0F)){}
                    f = this.m_ToDist / this.m_FromDist;
                    if(1.0F / f >= 1.0F){
                        break;
                    }
                }
                Coordinate paramMotionEvent2 = PubVar.m_Map.getViewConvert().ScreenToMap(this.m_ScaleStartPoint);
                Object localObject = this._MapControl.getMap().getExtend().Scale(1.0F/f);
                this._MapControl.getMap().setExtend((Envelope)localObject);
                localObject = PubVar.m_Map.getViewConvert().ScreenToMap(this.m_ScaleStartPoint);
                PubVar.m_Map.getCenter().setX(PubVar.m_Map.getCenter().getX() - (((Coordinate)localObject).getX() - paramMotionEvent.getX()));
                PubVar.m_Map.getCenter().setY(PubVar.m_Map.getCenter().getY() - (((Coordinate)localObject).getY() - paramMotionEvent.getY()));
                PubVar.m_Map.getViewConvert().CalExtend();
                this._MapControl.getMap().setInvalidMap(false);
                this._MapControl.getMap().Refresh();
                return;
            }
        }
    
        @Override
        public void OnPaint(Canvas paramCanvas)
        {
            if(this._PanScreen){
                this._Pan.OnPaint(paramCanvas);
            }
            while((this.MaskImage == null) || (this.m_ToRect == null)){
                return;
            }
            Paint localPaint = new Paint();
            localPaint.setColor(Color.BLUE);
            localPaint.setStyle(Paint.Style.FILL);
            paramCanvas.drawRect(0.0F, 0.0F, this.MaskImage.getWidth(), this.MaskImage.getHeight(), localPaint);
            paramCanvas.drawBitmap(this.MaskImage, new Rect(0, 0, this.MaskImage.getWidth(), this.MaskImage.getHeight()), 
                    this.m_ToRect, localPaint);
        }
    }
    View Code

     Pan.java 平移

    public class Pan implements ICommand, IOnPaint {
        float DeltX;
        float DeltY;
        Integer GGdc;
        float H1;
        float H2;
        Bitmap MaskImage = null;
        float W1;
        float W2;
        float X1;
        float X2;
        float Y1;
        float Y2;
        private MapControl _MapControl;
        boolean _MouseDown = false;
        private boolean _SelectMode = true;
        Paint brush = new Paint(Paint.HINTING_OFF);
        Canvas g2;
        private PointF m_MoveStart;
    
        public Pan(MapControl paramMapControl) {
            // TODO Auto-generated constructor stub
            this._MapControl = paramMapControl;
        }
        
        @Override
        public void MouseDown(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this._MapControl.getMap().setInvalidMap(true);
            this._MapControl.TrackingRectangle = null;
            this.m_MoveStart = new PointF(paramMotionEvent.getX(), paramMotionEvent.getY());
            Bitmap paramMotionEvent2 = this._MapControl.getMap().bp;
            this.MaskImage = this._MapControl.getMap().MaskBitmap;
            this._MouseDown = true;
        }
    
        @Override
        public void MouseMove(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            this.DeltX = (paramMotionEvent.getX() - this.m_MoveStart.x); //X方向的移动
            this.DeltY = (paramMotionEvent.getY() - this.m_MoveStart.y); //Y方向的移动
            float f1 = this._MapControl.getWidth(); //Map控件的宽度
            float f2 = this._MapControl.getHeight(); //Map控件的高度
            
            for(;;)
            {
                if (this.DeltY >= 0.0F)
                  {
                    if (this.DeltX < 0.0F) {
                       //break label184;
                        this.X1 = 0.0F;
                        this.Y1 = 0.0F;
                        this.W1 = this.DeltX;
                        this.H1 = f2;
                        this.X2 = 0.0F;
                        this.Y2 = 0.0F;
                        this.W2 = f1;
                        this.H2 = this.DeltY;
                        break;
                    }
                    else{
                        
                    }
                    this.X1 = 0.0F;
                    this.Y1 = 0.0F;
                    this.W1 = f1; //宽度
                    this.H1 = this.DeltY;
                    this.X2 = (this.DeltX + f1);
                    this.Y2 = 0.0F;
                    this.W2 = (-this.DeltX);
                    this.H2 = f2;
                    break;
                  }
                  else
                  {
                    if (this.DeltX < 0.0F) {
                      //break label184;
                      this.X1 = 0.0F;
                      this.Y1 = 0.0F;
                      this.W1 = this.DeltX;
                      this.H1 = f2;
                      this.X2 = 0.0F;
                      this.Y2 = (this.DeltY + f2);
                      this.W2 = f1;
                      this.H2 = (-this.DeltY);
                      break;
                    }
                    else{
                            
                    }
                    this.X1 = 0.0F;
                    this.Y1 = (this.DeltY + f2); //DeltY + Height
                    this.W1 = f1;
                    this.H1 = (-this.DeltY); //Y方向的变化正负
                    this.X2 = (this.DeltX + f1); //DeltX + Width
                    this.Y2 = 0.0F;
                    this.W2 = (-this.DeltX); //X方向
                    this.H2 = f2;
                    break;
                  }
                
            }
            this._MapControl.invalidate(); //刷新image
            return;
        }
        
        @Override
        public void MouseUp(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            if(this.g2 != null){
                this.g2 = null;
            }
            if(this.MaskImage != null){
                this.MaskImage = null;
            }
            if(this._MouseDown)
            {
                Coordinate localCoordinate1 = this._MapControl.getMap().getViewConvert().ScreenToMap(this.m_MoveStart);
                Coordinate localCoordinate2 = this._MapControl.getMap().getViewConvert().ScreenToMap(paramMotionEvent.getX(),
                        paramMotionEvent.getY());
                SetNewCenter(new Coordinate(this._MapControl.getMap().getCenter().getX() - (localCoordinate2.getX() - 
                        localCoordinate1.getX()), this._MapControl.getMap().getCenter().getY() - (localCoordinate2.getY() - 
                                localCoordinate1.getY())));
                this._MouseDown = false;
                if((this._SelectMode)&&(Math.abs(paramMotionEvent.getX() - this.m_MoveStart.x) <= 10.0F)&&(Math.abs(paramMotionEvent.getY()-
                        this.m_MoveStart.y)<=10.0F)){
                    this._MapControl._Select.MouseUp(paramMotionEvent);
                }
            }
            this._MapControl.getMap().setInvalidMap(false);
            System.gc();
        }
        
        @Override
        public void OnPaint(Canvas paramCanvas) {
            // TODO Auto-generated method stub
            if(this.MaskImage != null)
            {
                this.brush.setColor(Color.RED);
                this.brush.setStyle(Paint.Style.FILL);
                float f1 = this.X1;
                float f2 = this.Y1;
                float f3 = this.X1;
                float f4 = this.W1;
                float f5 = this.Y1;
                paramCanvas.drawRect(f1, f2, f4 + f3, this.H1 + f5, this.brush);
                f1 = this.X2;
                f2 = this.Y2;
                f3 = this.X2;
                f4 = this.W2;
                f5 = this.Y2;
                paramCanvas.drawRect(f1, f2, f4+f3, this.H2 + f5, this.brush);
                paramCanvas.drawBitmap(this.MaskImage, this.DeltX, this.DeltY, new Paint());
            }
        }
    
    
        public void SetNewCenter(Coordinate paramCoordinate) {
            // TODO Auto-generated method stub
            this._MapControl.getMap().getCenter().setX(paramCoordinate.getX());
            this._MapControl.getMap().getCenter().setY(paramCoordinate.getY());
            this._MapControl.getMap().getViewConvert().CalExtend();
            this._MapControl.getMap().Refresh();
        }
    
    }
    View Code

    Tools.ReadyGPS 准备GPS

    v1_CGpsPoint.java GPS点类

    public class v1_CGpsPoint implements ICommand, IOnPaint {
        private String m_TableName = "";
        
        private void AddPoint(Coordinate paramCoordinate, String paramString) //添加点
        {
            Point paramCoordinate2 = new Point(paramCoordinate);
            v1_BaseDataObject localv1_BaseDataObject = new v1_BaseDataObject(); //基本数据对象
            localv1_BaseDataObject.SetBaseObjectRelateTable(this.m_TableName);
            localv1_BaseDataObject.SetSYS_TYPE(paramString);
            int i = localv1_BaseDataObject.SaveGeoToDb(paramCoordinate2);
            Edit(this.m_TableName, i);
        }
        
        public void AddGPSPoint() //添加点
        {
            if(!Tools.ReadyGPS(true)){ //准备GPS完毕
                return;
            }
            if(!Boolean.parseBoolean(PubVar.m_HashMap.GetValueObject("Tag_System_GPS_AveragePointEnable").Value)){
                AddPoint(PubVar.m_GPSLocate.getGPSCoordinate(), "GPS点位");
                return;
            }
            v1_Data_Gps_AveragePoint localv1_Data_Gps_AveragePoint = new v1_Data_Gps_AveragePoint();
            localv1_Data_Gps_AveragePoint.SetDataType(lkGeoLayerType.enPoint);
            localv1_Data_Gps_AveragePoint.SetCallback(new ICallback(){
    
                @Override
                public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
                    // TODO Auto-generated method stub
                    v1_CGpsPoint.this.AddPoint((Coordinate)paramAnonymousObject, "GPS点位");
                }
            });
            localv1_Data_Gps_AveragePoint.ShowDialog(); //平均点对话框
        }
        
        public boolean CheckLayerValid() //检查图层是否可用
        {
            return PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer().CheckLayerValid(this.m_TableName);
        }
        
        public void Edit(String paramString, int paramInt)
        {
            v1_Data_Template localv1_Data_Template = new v1_Data_Template();
            localv1_Data_Template.SetLayerID(paramString);
            localv1_Data_Template.SetSYS_ID(paramInt);
            localv1_Data_Template.ShowDialog(); //数据模板对话框
        }
        
        public String GetTableName()
        {
            return this.m_TableName;
        }
    
        @Override
        public void OnPaint(Canvas paramCanvas) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void MouseDown(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            PointF paramMotionEvent2 = new PointF(paramMotionEvent.getX(), paramMotionEvent.getY());
            Coordinate paramMotionEvent3 = PubVar.m_Map.getViewConvert().ScreenToMap(paramMotionEvent2);
            Coordinate localCoordinate = StaticObject.soProjectSystem.XYToWGS84(paramMotionEvent3);
            paramMotionEvent3.setGeoX(localCoordinate.getX());
            paramMotionEvent3.setGeoY(localCoordinate.getY());
            AddPoint(paramMotionEvent3, "手绘点位");
        }
    
        @Override
        public void MouseMove(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void MouseUp(MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            
        }
        
        public void SetTableName(String paramString)
        {
            this.m_TableName = paramString;
        }
    
    }
    View Code

    v1_CGpsLine.java

    v1_CGpsPoly.java

    v1_GpsData_SelectLayer.java GPS数据选择图层类

    public class v1_GpsData_SelectLayer {
      private ICallback _Callback = null;
      private v1_FormTemplate _Dialog = new v1_FormTemplate(PubVar.C);
      private Object m_SelectItem = null;
      private ICallback pCallback = new ICallback()
      {
        @Override
        public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
            // TODO Auto-generated method stub
            Log.d("v1_GpsData_SelectLayer", "OnClick");
            if((paramAnonymousString.equals("确定"))&&(v1_GpsData_SelectLayer.this.m_SelectItem != null))
            {
                paramAnonymousString = ((HashMap)v1_GpsData_SelectLayer.this.m_SelectItem).get("D1").toString();
                Log.d("v1_GpsData_SelectLayer", "D1:" + paramAnonymousString);
                paramAnonymousObject = PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer().GetLayerIDByName(paramAnonymousString);
                Log.d("v1_GpsData_SelectLayer", "LayerID:" + paramAnonymousObject);
                v1_Layer localv1_Layer = PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer().GetLayerByID((String)paramAnonymousObject);
                if(v1_GpsData_SelectLayer.this._Callback != null){
                    if(localv1_Layer == null){
                        Log.d("v1_GpsData_SelectLayer", "localv1_Layer is null");
                    }
                    else{
                        Log.d("v1_GpsData_SelectLayer", "localv1_Layer isn't null");
                    }
                    Log.d("v1_GpsData_SelectLayer", localv1_Layer.GetLayerTypeName());
                    Log.d("v1_GpsData_SelectLayer", "Before callback:" + paramAnonymousString + "," + paramAnonymousObject + ","
                            + localv1_Layer.GetLayerTypeName());
                    v1_GpsData_SelectLayer.this._Callback.OnClick("当前图层", paramAnonymousString + "," + paramAnonymousObject + ","
                            + localv1_Layer.GetLayerTypeName()); //SubToolBar.OnClick()
                }
                v1_GpsData_SelectLayer.this._Dialog.dismiss();
            }
        }
          
      };
      
      public v1_GpsData_SelectLayer() //构造函数
      {
          this._Dialog.SetOtherView(R.layout.v1_gpsdata_selectlayer);
          this._Dialog.ReSetSize(1.0F, 0.96F);
          this._Dialog.SetCaption("选择图层");
          //this._Dialog.SetButtonInfo("1," + R.drawable.v1_ok + ",确定  ,确定", this.pCallback);
          this._Dialog.SetButtonInfo("1," + R.drawable.v1_ok +",确定  ,确定", this.pCallback);
          int i = 1;
          for(;;)
          {
              if(i > 3){
                  return;
              }
              Object localObject = "";
              if(i == 1){
                  localObject = PubVar.m_DoEvent.m_GPSPoint.GetTableName();
              }
              if(i == 2){
                  localObject = PubVar.m_DoEvent.m_GPSLine.GetTableName();
              }
              if(i == 3){
                  localObject = PubVar.m_DoEvent.m_GPSPoly.GetTableName();
              }
              v1_Layer localv1_Layer = PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer().GetLayerByID((String)localObject);
              if(localv1_Layer != null)
              {
                  this._Dialog.findViewById(R.id.ll_datainlayer).setVisibility(View.VISIBLE);
                  localObject = null;
                  if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPoint){
                      localObject = (Button)this._Dialog.findViewById(R.id.di_point);
                  }
                  if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPolyline){
                      localObject = (Button)this._Dialog.findViewById(R.id.di_line);
                  }
                  if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPolygon){
                      localObject = (Button)this._Dialog.findViewById(R.id.di_poly);
                  }
                  ((Button)localObject).setVisibility(View.VISIBLE);
                  ((Button)localObject).setText("[" + localv1_Layer.GetLayerName() + "]  ");
                  ((Button)localObject).setTag(localv1_Layer.GetLayerName());
                  ((Button)localObject).setOnClickListener(new View.OnClickListener() {
                    
                    @Override
                    public void onClick(View paramAnonymousView) {
                        // TODO Auto-generated method stub
                        HashMap localHashMap = new HashMap();
                        localHashMap.put("D1", paramAnonymousView.getTag());
                        v1_GpsData_SelectLayer.this.m_SelectItem = localHashMap;
                        v1_GpsData_SelectLayer.this.pCallback.OnClick("确定", null);
                    }
                });
              }
              i += 1;
          }
      }
      
      private void LoadLayerListInfo()
      {
          this._Dialog.GetButton("1").setEnabled(false);
          v1_ExpandableBar localv1_ExpandableBar1 = (v1_ExpandableBar)this._Dialog.findViewById(R.id.vExpandableBar_point);
          v1_ExpandableBar localv1_ExpandableBar2 = (v1_ExpandableBar)this._Dialog.findViewById(R.id.vExpandableBar_line);
          v1_ExpandableBar localv1_ExpandableBar3 = (v1_ExpandableBar)this._Dialog.findViewById(R.id.vExpandableBar_poly);
          ArrayList localArrayList1 = new ArrayList();
          ArrayList localArrayList2 = new ArrayList();
          ArrayList localArrayList3 = new ArrayList();
          Iterator localIterator = PubVar.m_DoEvent.m_ProjectDB.GetLayerExplorer().GetLayerList().iterator();
          for(;;)
          {
             if(!localIterator.hasNext())
             {
                 if(localArrayList1.size() > 0)
                 {
                     localv1_ExpandableBar1.setVisibility(View.VISIBLE);
                     localv1_ExpandableBar1.CreateBarHeader("【点图层】");
                     localv1_ExpandableBar1.SetItemList(localArrayList1);
                     localv1_ExpandableBar1.SetCallback(new ICallback(){
    
                        @Override
                        public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
                            // TODO Auto-generated method stub
                            Log.d("v1_GpsData_SelectLayer", "point layer clicked");
                            v1_GpsData_SelectLayer.this.m_SelectItem = paramAnonymousObject;
                            v1_GpsData_SelectLayer.this.pCallback.OnClick("确定", null);
                        }
                     });
                 }
                 if((localArrayList2.size() > 0) && (!PubVar.m_DoEvent.m_GPSLine.CheckIfStarting()))
                 {
                     localv1_ExpandableBar2.setVisibility(View.VISIBLE);
                     localv1_ExpandableBar2.CreateBarHeader("【线图层】");
                     localv1_ExpandableBar2.SetItemList(localArrayList2);
                     localv1_ExpandableBar2.SetCallback(new ICallback(){
    
                        @Override
                        public void OnClick(String paramAnonymousString, Object  paramAnonymousObject) {
                            // TODO Auto-generated method stub
                            v1_GpsData_SelectLayer.this.m_SelectItem = paramAnonymousObject;
                            v1_GpsData_SelectLayer.this.pCallback.OnClick("确定", null);
                        }
                     });
                 }
                 if((localArrayList3.size() > 0) && (!PubVar.m_DoEvent.m_GPSPoly.getGPSLine().CheckIfStarting()))
                 {
                     localv1_ExpandableBar3.setVisibility(View.VISIBLE);
                     localv1_ExpandableBar3.CreateBarHeader("【面图层】");
                     localv1_ExpandableBar3.SetItemList(localArrayList3);
                     localv1_ExpandableBar3.SetCallback(new ICallback(){
    
                        @Override
                        public void OnClick(String paramAnonymousString, Object paramAnonymousObject) {
                            // TODO Auto-generated method stub
                            
                            v1_GpsData_SelectLayer.this.m_SelectItem = paramAnonymousObject;
                            v1_GpsData_SelectLayer.this.pCallback.OnClick("确定", null);
                        }
                     });
                 }
                 return;
             }
             v1_Layer localv1_Layer = (v1_Layer)localIterator.next();
             Dataset localDataset = PubVar.m_Workspace.GetDataSourceByEditing().GetDatasetByName(localv1_Layer.GetLayerID());
             HashMap localHashMap = new HashMap();
             localHashMap.put("D1", localv1_Layer.GetLayerName());
             localHashMap.put("D2", localDataset.getRecordCount());
             if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPoint){
                 localArrayList1.add(localHashMap);
             }
             if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPolyline){
                 localArrayList2.add(localHashMap);
             }
             if(localv1_Layer.GetLayerType() == lkGeoLayerType.enPolygon){
                 localArrayList3.add(localHashMap);
             }
          }
      }
      
      public void SetCallback(ICallback paramICallback)
      {
          this._Callback = paramICallback;
      }
      
      public void ShowDialog()
      {
          this._Dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            
            @Override
            public void onShow(DialogInterface paramAnonymousDialogInterface) {
                // TODO Auto-generated method stub
                v1_GpsData_SelectLayer.this.LoadLayerListInfo();
            }
        });
        this._Dialog.show();
      }
    }
    View Code

    2. 数据库

    SQLite Expert

    源代码:对比源代码、程序和逻辑关系进行代码分析

    3. 软件截图

     

    加载工程

    点图层

    对应的数据库信息为:

    点的数据库存储信息

    比例尺

     

    注:该项目借鉴了SharpMap源代码。

  • 相关阅读:
    on duplicate key update之多列唯一索引
    js 判断 微信浏览器 安卓/苹果 pc/移动
    history 和 hash (转)
    路由vue-router
    添加图标ico
    vue项目结构
    vue2.0项目的构建
    echarts使用 图例改变和默认不选中
    微信自定义菜单设置 及 emoji表情更换
    复制/设置剪切板内容 (浏览器/nativejs)
  • 原文地址:https://www.cnblogs.com/2008nmj/p/5368514.html
Copyright © 2020-2023  润新知