更改纬度和经度格式

962
3.
06-22-2021 04:35 PM
johnmarker
通过
新贡献者III

你好,

我在地图上点击鼠标得到一个点。我使用该点创建一个MapPoint,并使用屏幕定位在该点上。这允许MapPoint具有x/y属性。当我这样做时,MapPoint的x和y属性就是米的测量值。但是,我需要测量x/y ->拉/长,以度和分钟的格式,范围为=-90度和=-180度。

例子:

45º,-94º纬度/长度约为-10503190m, 5653794m x/y。

我知道有CoordinateFormatter转换为lat/long,但这没有得到它的范围=-90和=-180。它仍然以米为单位。

我可能错过了一些东西,并希望被指向正确的方向,但是否有任何转换器将为我做这个?

标签(5)
0荣誉
3回复
NathanCastle1
通过 Esri贡献者
Esri贡献者

看起来您在web mercator空间参考中有一个点(这是Esri底图倾向于使用的),并且希望在WGS84中获得这个点,这是GPS和大多数消费者服务使用的点。

CoordinateFormatter应该工作。在格式坐标示例中有一个例子:https://developers.arcgis.com/net/wpf/sample-code/format-coordinates/.你能分享一下你的代码吗,这样我就能理解发生了什么?

在此之前,您可以使用几何引擎从web墨卡托投影到WGS84:

使用Esri.ArcGISRuntime.Geometry;/ /……MapPoint inputPoint = new MapPoint(-10503190, 5653794, SpatialReferences.WebMercator);var outputPoint = (MapPoint)。项目(inputPoint SpatialReferences.Wgs84);System.Diagnostics.Debug.WriteLine ($ {outputPoint”。Y}, {outputPoint.X}”);//输出:45.20462984270032,-94.35176109011317

0荣誉
johnmarker
通过
新贡献者III

@NathanCastle1这只是我正在做的事情的一个小片段示例。MapPoint的格式是米。我在使用坐标Formatter时面临的另一个问题是所有方法要么接受字符串作为参数,要么返回字符串。我有一个MapPoint需要转换为MapPoint与不同的格式。使用coordinateformatter,它返回一个字符串,然后我失去了访问MapPoint的lat/long属性的能力。

private void MainMapView_MouseLeftButtonUp(对象发送者,MouseButtonEventArgs e){点p = e.g tposition (MainMapView);MapPoint mp = MainMapView. screentolocation (e.GetPosition(MainMapView));Trace.WriteLine (mp。X + " " + mp.Y);}

0荣誉
NathanCastle1
通过 Esri贡献者
Esri贡献者

听起来像几何引擎。项目是你正在尝试做的事情的正确选择。CoordinateFormatter主要用于以各种不同的文本格式显示坐标,而您主要是在基础的x,y/lat,long值之后。GeometryEngine。项目将在正确的空间参考点上产生一个完整的空间属性。

MapPoint mp = MainMapView. screentolocation (e.GetPosition(MainMapView));/ / GeometryEngine。项目返回一个几何对象,但如果输入是一个MapPoint,输出可以假设是一个MapPoint mp = (MapPoint)几何引擎。项目(mp, SpatialReferences.Wgs84);//注意WGS84 latat /long对应WebMercator Y/X Trace.WriteLine(mp. writeline)。Y + " " + mp.X);
0荣誉