锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
{
bool isCrossed = true;
//map.DeselectAll();
//map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
//map.OpenList(TerraceConst.LIST_DIVIDE_AREA, 0);
//int numLineCross = map.ScanGeometry("TMP_List", Constants.SIS_GT_CROSS , Constants.SIS_GM_GEOMETRY, "", "");
//int numLineCrossby = map.ScanGeometry("TMP_List", Constants.SIS_GT_CROSSBY, Constants.SIS_GM_GEOMETRY, "", "");
//int numLine = numLineCross + numLineCrossby;
//if (numLine != map.GetListSize(TerraceConst.LIST_DIVIDE_LINE))
// isCrossed = false;
//map.CloseItem();
//map.DeselectAll();
map.EmptyList("TMP_LIST_LINE");
map.EmptyList("TMP_LIST_AREA");
map.EmptyList("TMP_LIST_CROSS");
//鍒嗙瓎鐢ㄣ儵銈ゃ兂銇褰㈢窔銈掍綔鎴愩仐銇︺乀MP_LIST_LINE銇櫥閷?/span>
map.DeselectAll();
map.SelectList(TerraceConst.LIST_DIVIDE_LINE);
map.CreateListFromSelection("TMP_LIST_LINE");
map.CopyListItems("TMP_LIST_LINE");
map.DeselectAll();
map.SelectList("TMP_LIST_LINE");
map.DoCommand("AComBoundary");
map.CreateListFromSelection("TMP_LIST_LINE");
//鍒嗙瓎鐢ㄣ偍銉偄銇褰㈢窔銈掍綔鎴愩仐銇︺乀MP_LIST_AREA銇櫥閷?/span>
map.DeselectAll();
map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
map.CreateListFromSelection("TMP_LIST_AREA");
map.CopyListItems("TMP_LIST_AREA");
map.DeselectAll();
map.SelectList("TMP_LIST_AREA");
map.DoCommand("AComBoundary");
map.CreateListFromSelection("TMP_LIST_AREA");
//鍏ュ姏Line銇岀瓎鐣岀窔涓娿伀銇嬨仼銇嗐亱鍒ゆ柇銇椼伨銇?/span>
for (int i = 0; i < map.GetListSize("TMP_LIST_LINE"); i++)
{
map.DeselectAll();
map.CombineLists("TMP_LIST_CROSS", "TMP_LIST_LINE", "TMP_LIST_AREA", Constants.SIS_BOOLEAN_OR);
map.CreateBoolean("TMP_LIST_CROSS", Constants.SIS_BOOLEAN_AND);
map.DeselectAll();
map.SelectItem();
map.DoCommand("AComDecompose");
map.CreateListFromSelection("TMP_LIST_CROSS");
if (map.GetListSize("TMP_LIST_CROSS") < 2)
{
isCrossed = false;
break;
}
}
map.EmptyList("TMP_LIST_LINE");
map.EmptyList("TMP_LIST_AREA");
map.EmptyList("TMP_LIST_CROSS");
return isCrossed;
}
double extendR = 50;
Dictionary<string, double> ptInfos = new Dictionary<string, double>();
map.EmptyList("TMP_LIST_LINE");
map.EmptyList("TMP_LIST_AREA");
map.EmptyList("TMP_LIST_CROSS");
//鍒嗙瓎鐢ㄣ儵銈ゃ兂銇褰㈢窔銈掍綔鎴愩仐銇︺乀MP_LIST_LINE銇櫥閷層仐銇俱仚
map.DeselectAll();
map.SelectList(TerraceConst.LIST_DIVIDE_LINE);
map.CreateListFromSelection("TMP_LIST_LINE");
map.CopyListItems("TMP_LIST_LINE");
map.DeselectAll();
map.SelectList("TMP_LIST_LINE");
map.DoCommand("AComBoundary");
map.CreateListFromSelection("TMP_LIST_LINE");
//鍒嗙瓎鐢ㄣ偍銉偄銇褰㈢窔銈掍綔鎴愩仐銇︺乀MP_LIST_AREA銇櫥閷層仐銇俱仚
map.DeselectAll();
map.SelectList(TerraceConst.LIST_DIVIDE_AREA);
map.CreateListFromSelection("TMP_LIST_AREA");
map.CopyListItems("TMP_LIST_AREA");
map.DeselectAll();
map.SelectList("TMP_LIST_AREA");
map.DoCommand("AComBoundary");
map.CreateListFromSelection("TMP_LIST_AREA");
//鍏ュ姏Line銇岀瓎鐣岀窔涓娿伀銇嬨仼銇嗐亱鍒ゆ柇銇椼伨銇?/span>
for (int i = 0; i < map.GetListSize("TMP_LIST_LINE"); i++)
{
map.DeselectAll();
map.CombineLists("TMP_LIST_CROSS", "TMP_LIST_LINE", "TMP_LIST_AREA", Constants.SIS_BOOLEAN_OR);
map.CreateBoolean("TMP_LIST_CROSS", Constants.SIS_BOOLEAN_AND);
map.DeselectAll();
map.SelectItem();
map.DoCommand("AComDecompose");
map.CreateListFromSelection("TMP_LIST_CROSS");
//鍏ュ姏搴ф銇岀瓎鐣岀窔涓娿伀榪戙亜銇屾帴銇椼仸銇勩仾銇勩仺銇嶃伄鍑︾悊銇с仚銆?/span>
if (map.GetListSize("TMP_LIST_CROSS") < 2)
{
map.DeselectAll();
map.OpenList(TerraceConst.LIST_DIVIDE_LINE, i);
map.SelectItem();
ptInfos = SisCommon.GetCurItemPointInfos(map);
double sx = ptInfos["濮嬬偣X"];
double sy = ptInfos["濮嬬偣Y"];
double sAngle = ptInfos["濮嬬偣瑙掑害"];
double ex = ptInfos["緄傜偣X"];
double ey = ptInfos["緄傜偣Y"];
double eAngle = ptInfos["緄傜偣瑙掑害"];
if (mode == TerraceConst.MODE_LINE_EXTEND_VERTICALINTERSECT)//鍨傜洿銇氦鐐?/span>
{
}
else if (mode == TerraceConst.MODE_LINE_EXTEND_EXTENSION)//寤墮暦綬?/span>
{
//緄傜偣寤墮暦綬?/span>
double tx = ex + extendR * Math.Cos(Math.Abs(eAngle + 180) * Math.PI / 180);
double ty = ey + extendR * Math.Sin(Math.Abs(eAngle + 180) * Math.PI / 180);
map.DeselectAll();
map.MoveTo(ex, ey, 0);
map.LineTo(tx, ty, 0);
map.StoreAsLine();
map.GetExtent();
map.AddToList(TerraceConst.LIST_DIVIDE_LINE); //銉┿偆銉熾倰銉偣銉堛伀榪藉姞
//濮嬬偣寤墮暦綬?/span>
tx = sx + extendR * Math.Cos(Math.Abs(sAngle + 180) * Math.PI / 180);
ty = sy + extendR * Math.Sin(Math.Abs(sAngle + 180) * Math.PI / 180);
map.DeselectAll();
map.MoveTo(sx, sy, 0);
map.LineTo(tx, ty, 0);
map.StoreAsLine();
map.GetExtent();
map.AddToList(TerraceConst.LIST_DIVIDE_LINE); //銉┿偆銉熾倰銉偣銉堛伀榪藉姞
}
}
}
map.EmptyList("TMP_LIST_LINE");
map.EmptyList("TMP_LIST_AREA");
map.EmptyList("TMP_LIST_CROSS");
]]>
step2錛氳幏鍙朙ocationManager瀵硅薄
step3錛氶夋嫨LocationProvider錛岀粦瀹歀ocationListener瀵硅薄
闄勶細MyLocationListener