有很多事情需要這個比當前已給出。緯度/長點和地圖都有特定的空間參考。如果它們不匹配,很可能你的觀點會以意想不到的方式進行繪圖。
您顯示的點是標準的緯度/經度點。這可能是Nad83(北美)或WGS84(世界)。這些是空間參考與Geographical Coordinate System。您可能試圖在Projected Coordinate System上繪製點。
您需要使MapControl的空間參考匹配您試圖繪製的點的類型。
因爲我不知道地圖的空間參考,所以我只能給你一個將Lat/Lon轉換成MapControl當前空間參考的例子。
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass();
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
ISpatialReference sr1 = gcs;
IPoint point = new PointClass() as IPoint;
point.PutCoords(-92.96000, 44.9227);
IGeometry geometryShape;
geometryShape = point;
geometryShape.SpatialReference = sr1;
geometryShape.Project(mapControl.SpatialReference);
mapControl.DrawShape(geometryShape);
這需要您的觀點並將其投影到MapControls當前空間參考,然後繪製點。
祝你好運。
您只問過如何將緯度/經度轉換爲點類。您的代碼與我的代碼完全相同,除非您在一個點上縮放並居中,而不是在地圖上繪製點。我的解決方案提供了正確的信息來回答你的問題。 – jsmith 2010-08-25 20:25:27
@jsmith我想知道在你放置協議之前你是否必須設置點的SpatialReference?我似乎這樣認爲,如果情況並非如此,那麼我必須複製粘貼錯誤。 – 0x4f3759df 2010-08-25 21:08:21
是的,你這樣做。在我的代碼中,我設置了幾何圖形的空間參考,因爲我正在繪製這個點。沒有必要設置點本身的sr。您不使用幾何圖形,因此您可以設置點本身的空間參考。 – jsmith 2010-08-26 03:10:47