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; } } } });
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"); } //*/ }
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"); }
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"); }
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; } }
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); } } }
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; } }
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(); } }
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; } } }
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; } }
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; } }
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; } }
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(); } } }
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; } }
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; } }
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); } }
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; } }
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; } } }
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; } }
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; } }
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; } }
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; } }
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); } }
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); } }
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 {} }
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 } } }
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; }
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()); } }
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; } //} } }
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(); } }
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); } }
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; } } }
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); } }
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(); } }
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; } }
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(); } }
2. 数据库
SQLite Expert
源代码:对比源代码、程序和逻辑关系进行代码分析
3. 软件截图
加载工程
点图层
对应的数据库信息为:
点的数据库存储信息
比例尺
注:该项目借鉴了SharpMap源代码。