在 Windows 运行时应用程序 (Windows 8.1) 中的 ArcGIS Esri 地图上获取鼠标 tap/click 上的 GPS 坐标
Get GPS Coordinates on mouse tap/click on ArcGIS Esri Map in Windows Runtime Apps (Windows 8.1)
如何获取ArcGIS Esri地图中clicked/tapped点的GPS坐标(经度、纬度)?
我尝试了 MapViewTapped
事件,例如:
private void myMapView_MapViewTapped(object sender, MapViewInputEventAtgs e)
{
var x = e.Position.X; //e.Location.X;
var y = e.Position.Y; //e.Location.Y;
}
两者都给出了意想不到的大值。
您正在使用 MapViewInputEventArgs.Position 属性 - 这给出了屏幕坐标 - 请参阅 sample code for Show Mouse Coordinates。使用 Location 属性 获取地图坐标,如示例中所示。
值得注意的是,您的地图很可能正在使用 Web Mercator coordinate system - 例如如果您使用默认的 Esri 底图创建了 MapView。如果是这样,地图坐标将以米为单位报告,大约在 -20,000,000 到 +20,000,000 的范围内。
WGS84 坐标系以度为单位给出纬度和经度,供 GPS 系统使用。要从另一个坐标系转换一个点(例如,您的 MapView 的 SpatialReference,如果与那个不同),您可以 'project' 该点 - 使用 GeometryEngine class 上的 Project 方法,并传入一个 MapPoint以及您想要的 SpatialReference,例如
MapPoint projectedPoint = GeometryEngine.Project(e.Location, SpatialReferences.Wgs84);
请参阅 Project Coordinate 示例来证明这一点。
如何获取ArcGIS Esri地图中clicked/tapped点的GPS坐标(经度、纬度)?
我尝试了 MapViewTapped
事件,例如:
private void myMapView_MapViewTapped(object sender, MapViewInputEventAtgs e)
{
var x = e.Position.X; //e.Location.X;
var y = e.Position.Y; //e.Location.Y;
}
两者都给出了意想不到的大值。
您正在使用 MapViewInputEventArgs.Position 属性 - 这给出了屏幕坐标 - 请参阅 sample code for Show Mouse Coordinates。使用 Location 属性 获取地图坐标,如示例中所示。
值得注意的是,您的地图很可能正在使用 Web Mercator coordinate system - 例如如果您使用默认的 Esri 底图创建了 MapView。如果是这样,地图坐标将以米为单位报告,大约在 -20,000,000 到 +20,000,000 的范围内。
WGS84 坐标系以度为单位给出纬度和经度,供 GPS 系统使用。要从另一个坐标系转换一个点(例如,您的 MapView 的 SpatialReference,如果与那个不同),您可以 'project' 该点 - 使用 GeometryEngine class 上的 Project 方法,并传入一个 MapPoint以及您想要的 SpatialReference,例如
MapPoint projectedPoint = GeometryEngine.Project(e.Location, SpatialReferences.Wgs84);
请参阅 Project Coordinate 示例来证明这一点。