2010-08-24 127 views
1
IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass(); 
pPoint.PutCoords(-92.96000, 44.9227); //This should be near Minneapolis 
mapControl.CenterAt(pPoint); //mapControl is a AxMapControl 

當我運行此代碼時,點總是在堪薩斯州附近結束。任何人都可以幫助我將lat/longs轉換爲可以正常工作的PointClass嗎?將Lat/long轉換爲PointClass

我使用VS2010的ArcEngine 10 C#

回答

3

有很多事情需要這個比當前已給出。緯度/長點和地圖都有特定的空間參考。如果它們不匹配,很可能你的觀點會以意想不到的方式進行繪圖。

您顯示的點是標準的緯度/經度點。這可能是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當前空間參考,然後繪製點。

祝你好運。

0

這是放大和居中lat/long的代碼,上面的海報很有幫助,但是他的解決方案對我沒有幫助。

mapControl.MapScale = mapControl.MapScale/2; //for zooming 
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass(); //move up top later 
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984); //World lat/long format 
ISpatialReference sr1 = gcs; 
IPoint point = new PointClass(); 
point.SpatialReference = gcs; 
point.PutCoords(-92.96000, 44.9227); 
point.Project(mapControl.SpatialReference); 
mapControl.CenterAt(point); 
+1

您只問過如何將緯度/經度轉換爲點類。您的代碼與我的代碼完全相同,除非您在一個點上縮放並居中,而不是在地圖上繪製點。我的解決方案提供了正確的信息來回答你的問題。 – jsmith 2010-08-25 20:25:27

+0

@jsmith我想知道在你放置協議之前你是否必須設置點的SpatialReference?我似乎這樣認爲,如果情況並非如此,那麼我必須複製粘貼錯誤。 – 0x4f3759df 2010-08-25 21:08:21

+0

是的,你這樣做。在我的代碼中,我設置了幾何圖形的空間參考,因爲我正在繪製這個點。沒有必要設置點本身的sr。您不使用幾何圖形,因此您可以設置點本身的空間參考。 – jsmith 2010-08-26 03:10:47