阅读:1319回复:2
[求助]求坐标
一般情况下,用鼠标点击的当前位置在地图上的坐标x,y ,用Set pPoint = m_pScreenDisplay.DisplayTransformation.ToMapPoint(x, y) 可求出pPoint.x , pPoint.y;我的问题是如果知道pPoint.x , pPoint.y,如何求x,y。谢谢!
|
|
1楼#
发布于:2007-05-26 19:43
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
2楼#
发布于:2007-05-27 11:47
首先需要当前地图所采用的坐标单位,需要在声明里定义变量sMapUnits<FONT face=宋体>:</FONT><BR>Private sMapUnits As String '<FONT face=宋体>显示坐标用</FONT><BR><BR><FONT face=宋体>然后在</FONT>MapControl1_OnMapReplaced<FONT face=宋体>里增加代码:</FONT><BR>Dim pMapUnits As esriUnits<BR>pMapUnits = MapControl1.MapUnits<BR> <BR> IfpMapUnits = esriCentimeters Then<BR> sMapUnits = "Centimeters"<BR>ElseIf pMapUnits = esriDecimalDegrees Then<BR> sMapUnits = "Decimal Degrees"<BR>ElseIf pMapUnits = esriDecimeters Then<BR> sMapUnits = "Decimeters"<BR>ElseIf pMapUnits = esriFeet Then<BR> sMapUnits = "Feet"<BR>ElseIf pMapUnits = esriInches Then<BR> sMapUnits = "Inches"<BR>ElseIf pMapUnits = esriKilometers Then<BR> sMapUnits = "Kilometers"<BR>ElseIf pMapUnits = esriMeters Then<BR> sMapUnits = "Meters"<BR>ElseIf pMapUnits = esriMiles Then<BR> sMapUnits = "Miles"<BR>ElseIf pMapUnits = esriMillimeters Then<BR> sMapUnits = "Millimeters"<BR>ElseIf pMapUnits = esriNauticalMiles Then<BR> sMapUnits = "NauticalMiles"<BR>ElseIf pMapUnits = esriPoints Then<BR> sMapUnits = "Points"<BR>ElseIf pMapUnits = esriUnknownUnits Then<BR> sMapUnits = "Unknown"<BR>ElseIf pMapUnits = esriYards Then<BR> sMapUnits = "Yards"<BR> EndIf<BR><BR><FONT face=宋体>接下来只要在</FONT>MapControl1_OnMouseMove<FONT face=宋体>里添加代码:</FONT><BR>Private Sub MapControl1_OnMouseMove(ByValbutton As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long, ByValmapX As Double, ByVal mapY As Double)<BR>'<FONT face=宋体>状态栏上显示坐标</FONT> <BR>StatusBar1.Panels(2).Text =Format(mapX, ".00") ; " , " ; Format(mapY, ".00") ; " " ;sMapUnits <BR>End Sub<BR>
|
|