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("是否打开上次工程?\r\n\r\n工程名称:%1$\r\n上次时间:%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("\r\n", 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 = ;
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 += ;
}
} 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);//
} 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源代码。

GPSMap程序源代码的更多相关文章

  1. 服务器程序源代码分析之三:gunicorn

    服务器程序源代码分析之三:gunicorn 时间:2014-05-09 11:33:54 类别:网站架构 访问: 641 次 gunicorn是一个python web 服务部署工具,类似flup,完 ...

  2. CodeIgniter框架开发的统计程序源代码开放

    文章来源: PHP开发学习门户 自己初学php时,用CodeIgniter框架开发的后台统计程序源代码 程序部分页面如图: 具体配置及下载源代码:http://bbs.phpthinking.com/ ...

  3. 源码推荐:移动端商城(微信小程序源代码) WebView离线缓存

    移动端商城(微信小程序源代码)(上传者:腾讯攻城师jack) 功能包括:商品橱窗,商品搜索,购物车,结账等功能. TableView嵌套webView自适应高度(上传者:linlinchen) tab ...

  4. 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)

    一键获取微信小程序源代码 Tips: 一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以 ...

  5. 03.WebView演练-iOS开发Demo(示例程序)源代码

    技术博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong   //转载请注明出处--本文永久链接:h ...

  6. iOS多线程 iOS开发Demo(示例程序)源代码

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版)   iOS程序源代码下载链接:01.大任务.zip22 ...

  7. 代理设计模式iOS开发Demo(示例程序)源代码

        iOS程序源代码下载链接:03-代理设计模式.zip28.3 KB // main.m // //  main.m //  03-代理设计模式 // //  Created by apple ...

  8. 表白程序源代码,android

    弄了一个表白程序,还是不错的,内容能够自己设置.并附上源代码:http://download.csdn.net/detail/a358763471/7803571 看下效果图吧.是动画的哦...

  9. C语言dos程序源代码分享(进制转换器)

    今天给大家分享一个dos程序的源代码 这个程序是本人在学习中的经验分享 如果有问题或者建议,欢迎大家一起交流 源代码: /*本程序为一个进制转换器 本程序不作为商业用途,完全为技术交流 喜欢C语言的同 ...

随机推荐

  1. ubutnu同时安装OpenCV2和OpenCV3及contrib

    1.OpenCV2源码安装 安装依赖项 sudo apt-get install build-essential //build-essential是c语言的开发包,包含了gcc make gdb和l ...

  2. C语言第十周作业

        这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/h ...

  3. python之optparse

    Python有两个内建的模块用来处理命令行参数 一个是getopt只能简单处理命令行参数 一个是optparse,功能更强大,而且易于使用,可以方便地生成标准的,符合Unix/Posix规范的命令行说 ...

  4. Mysql常用时间函数的用法和应用

    /* ---1)整型时间戳转换为date的格式(yyyymmdd, yyyy年mm月dd)--*/ , '%Y%m%d' ); -- 20090806 , '%Y年%m月%d' ); -- 2009年 ...

  5. Comet OJ C1076 [Contest #4]求和

    题目 首先我们可以通过经典容斥转化为计算\([1,x]\)的答案. 现在我们考虑一个数的个位对答案的贡献. 每做一次操作都会让个位加上十位然后取模,直到只有个位为止. 我们发现这个过程中,个位数前的系 ...

  6. Python入门之 函数

    Python入门之 函数 1.初识函数 1.1 什么是函数? <1> 将某个功能封装到一个空间中就是一个函数 <2> 减少重复代码 1.2 定义函数 def -- python ...

  7. 算法(C#版)动态规划和贪心算法

    https://blog.csdn.net/kouzhuanjing1849/article/details/88954811

  8. C# Excel数据验重及Table数据验重

    http://blog.csdn.net/jiankunking/article/details/38398087 最近在做导入Excel数据的时候,要检验数据是否重复: 1.要检验Excel数据本身 ...

  9. htpwdScan — 一个简单的HTTP暴力破解、撞库攻击脚本

    李姐姐之前跟我们分享了子域名枚举工具subDomainBrute<subDomainsBrute — 改进渗透测试时暴力枚举子域名的python脚本>,这回带给我们htpwdScan ht ...

  10. XPath语法以及谓语的结合使用

    /* XPath 术语 节点(Node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或 ...