将屏幕点转换为SP 4326

时间:2016-08-02 06:41:24

标签: c# esri

我正在使用Esri for .NET。我使用ScreenToLocation函数通过鼠标点击屏幕坐标。如何将此mappoint转换为4326的SP?

MapPoint mapPoint = Mapview.ScreenToLocation(screenPoint);

我的mappoint不是我点击地图的地方。我得到的坐标为5423799.44921864,-267641.097678069

1 个答案:

答案 0 :(得分:2)

您是使用ArcGIS Runtime for Windows store还是运行时使用wpf?

无论如何,你得到一个WebMercator点。要在空间参考之间进行转换,您需要使用wpf GeometryService 的项目方法或winstore上的 GeometryEngine

或者,如果您希望通过代码同步转换WebMercator(102100/3857)到WGS84(4326),则可以执行以下操作:

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));
}

从WGS84转到WM

{{1}}

请注意,此代码仅适用于WM /来自WGS的WM。对于其他转换,您必须始终使用GeometryService