我正在构建一个简单的应用,用户可以在Google地图上徒手绘制并在其中选择标记。我正在使用Xamarin Forms构建此应用程序。
我已经尝试过一些方法来在Google Map上徒手画图,但是在webview的手机屏幕上却无法正常工作。
因此,我使用Xamarin插件在屏幕上生成Google地图,但是该插件 https://github.com/amay077/Xamarin.Forms.GoogleMaps
也没有徒手绘制,但是它具有指定位置的折线绘制工具。
我的想法是,如果我可以在屏幕上重叠一个图层,并在该图层上使用darw写意,然后将屏幕上的这些点转换为Maps Lat和Lon,则可以将这些Lat / Lon传递给Map插件以在地图上绘制多义线对我来说。
对于在地图上绘制,我正在使用另一个Xamarin表格SkiaSharp插件,并且我将其背景设为透明,因此,它看起来就像我们在直接在Map上绘制一样。
所以,到这里为止一切都很完美,我也得到了Map各个方面的纬度/经度。
所以,我有
问题是我不知道如何转换
我在这里找到的解决方案都与仅基于Android或基于Web的Google Maps api相关,
我需要知道如何将屏幕显示点转换为Google Lat / Lon
我的想法不多,但不确定如何工作
也许我们可以使用xamarin.forms.maps,并构建一些中间件来在屏幕点和xamarin.forms.maps之间进行通信以获取坐标,这在iOS的情况下也可能会有所帮助,因此,我们将使用默认地图获取坐标,并将这些坐标传递给Google Maps插件以在地图上创建折线
也许是基于服务器的API,我们可以向其传递屏幕尺寸,点数,地图4个侧面坐标,并且该API可以向我们返回纬度/经度吗?
还是应用程序内有一些公式可以将X,Y点转换为坐标?
答案 0 :(得分:2)
Google Maps有一个Projection类,该类具有可用于将屏幕坐标转换为纬度/经度(并在需要时返回)的方法:
yourGoogleMapInstance.Projection.FromScreenLocation(APointObject)
iOS的MapKit具有类似的功能(C#{MKMapView.ConvertPoint
= ObjC convertPoint:toCoordinateFromView:
):