0
我正在使用Esri for .NET。我使用ScreenToLocation函數通過鼠標單擊來捕獲屏幕座標。我如何將這個映射轉換爲4326的SP?將屏幕轉換爲SP 4326
MapPoint mapPoint = Mapview.ScreenToLocation(screenPoint);
我的地圖不是我點擊地圖的地方。我得到的座標爲5423799.44921864,-267641.097678069
我正在使用Esri for .NET。我使用ScreenToLocation函數通過鼠標單擊來捕獲屏幕座標。我如何將這個映射轉換爲4326的SP?將屏幕轉換爲SP 4326
MapPoint mapPoint = Mapview.ScreenToLocation(screenPoint);
我的地圖不是我點擊地圖的地方。我得到的座標爲5423799.44921864,-267641.097678069
您是使用ArcGIS Runtime for windows store還是wpf的運行時?
無論如何,你正在獲得一個WebMercator點。爲了空間參考之間進行轉換需要使用上wpf在winstore
的GeometryService的工程方法或GeometryEngine或者,如果你喜歡做轉換WebMercator(三千八百五十七分之一十萬二千百)到WGS84 (4326)同步的代碼,你可以做:
private const double R_MAJOR = 6378137.0;
private const double R_MINOR = 6356752.3142;
public MapPoint PointToWGS84(double x, double y)
{
double originShift = 2 * Math.PI * R_MAJOR/2.0;
double mx = (x/originShift) * 180.0;
double my = (y/originShift) * 180.0;
my = (180/Math.PI) * (2 * Math.Atan(Math.Exp(my * Math.PI/180.0)) - Math.PI/2.0);
return new MapPoint(mx, my, new SpatialReference(WGS84));
}
從WGS84到WM
public MapPoint PointToWM(double x, double y)
{
double originShift = 2 * Math.PI * R_MAJOR/2.0;
double mx = x * originShift/180.0;
double my = Math.Log(Math.Tan((90.0 + y) * Math.PI/360.0))/(Math.PI/180.0);
my = my * originShift/180.0;
return new MapPoint(mx, my, new SpatialReference(102100));
}
請注意,此代碼僅適用於WM來往/來自WGS。對於其他轉換,您必須始終使用GeometryService
如果您想了解更多信息:http://wiki.openstreetmap.org/wiki/Mercator – Ivan