如何将屏幕 X 和 Y 转换为纬度和经度
Posted
技术标签:
【中文标题】如何将屏幕 X 和 Y 转换为纬度和经度【英文标题】:How to convert screen X and Y into Lat & LOn 【发布时间】:2019-11-12 09:53:38 【问题描述】:我正在构建一个简单的应用程序,用户可以在其中徒手绘制 Google 地图并在其中选择标记。我正在使用 Xamarin Forms 来构建这个应用程序。
我尝试了一些在谷歌地图上徒手绘制的东西,但在 webview 内的移动屏幕上它不起作用。
所以,我使用 Xamarin 插件在屏幕中生成 Google 地图,但是这个插件 https://github.com/amay077/Xamarin.Forms.GoogleMaps
也没有手绘,但它有一个给定位置的折线绘图工具。
我的想法是,如果我可以在屏幕上重叠一个图层并在该图层上徒手使用 darw 并将这些屏幕点转换为 Maps Lat 和 Lon,然后可以将这些 Lat/Lon 传递给 Map 插件以在地图上绘制折线对我来说。
为了在地图上绘图,我使用了另一个 Xamarin 表单 SkiaSharp 插件,并且我已将其背景设置为透明,因此,它看起来就像我们只是在直接在地图上绘图。
所以,到这里一切都完美了,我也得到了地图各个方面的纬度/经度。
所以,我有
-
屏幕上的 SkiaSharp 叠加在 Google 地图上,这使得在该图层上绘制完美,地图在背景中完全可见,看起来就像我们在地图上绘制
我有地图所有四个侧面(上、左、右、下)的纬度/经度
我在 SkiaSharp 屏幕上绘图时有积分
问题是我不知道如何转换
我在这里找到的解决方案都只与 android 或基于 web 的 google maps api 相关,
我需要了解如何将屏幕点转换为谷歌纬度/经度
我有一些想法,但不确定它们将如何工作
-
1234563使用默认地图获取坐标,并将这些坐标传递给谷歌地图插件以在地图上创建折线
也许是基于服务器的 API,我们将屏幕尺寸、点、地图 4 面坐标传递给该 API,该 API 可以针对它们返回纬度/经度?
或者应用程序内部的一些公式将 X、Y 点转换为坐标?
【问题讨论】:
【参考方案1】:Google Maps 有一个 Projection 类,该类具有可用于将屏幕坐标转换为 Lat/Long 的方法(如果需要,还可以返回):
yourGoogleMapInstance.Projection.FromScreenLocation(APointObject)
https://developers.google.com/android/reference/com/google/android/gms/maps/model/LatLng.html
ios的MapKit也有类似的功能(C#MKMapView.ConvertPoint
=ObjCconvertPoint:toCoordinateFromView:
):
【讨论】:
太棒了。我必须记住这一点 但是我使用插件加载谷歌地图,我没有使用原生地图,我不确定这个解决方案是否也适用于我的情况? 我可以使用透明图层在地图上完美绘制,将这些屏幕点转换为纬度的问题 @Creative 有什么问题? 我完全不知道如何从这里开始,我如何将我的屏幕X和Y转换为坐标?以上是关于如何将屏幕 X 和 Y 转换为纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章