如何使用 Xamarin.Forms.GoogleMaps 将地图的纬度和经度转换为像素坐标?
How can you translate a map latitude and longitude to a pixel coordinate using Xamarin.Forms.GoogleMaps?
我必须将地图上显示的纬度和经度转换为屏幕坐标。
我在网上搜索了解决方案,似乎曾经有一个叫做 Projection 的东西可以解决这个问题,但它不再可以通过 Xamarin.Forms.GoogleMaps 访问。
如果有某种方法可以将纬度和经度之间的坐标转换为屏幕 x 和 y 坐标,那将是最佳选择。
我刚刚在 Android.project 中 Xamarin.Forms.Maps
的 mapRender 中进行了测试,发现您可以在渲染器中使用 Projection
。
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
var projection = NativeMap.Projection;
projection.ToScreenLocation();
projection.FromScreenLocation();
}
if (e.NewElement != null)
{
var formsMap = (CustomMap)e.NewElement;
customPins = formsMap.CustomPins;
Control.GetMapAsync(this);
}
}
然后你可以调用projection.ToScreenLocation();
和projection.FromScreenLocation();
来翻译点数。我认为如果你使用 Xamarin.Forms.GoogleMaps
.
几乎是一样的
参考:Projection and custom-renderer/map
我必须将地图上显示的纬度和经度转换为屏幕坐标。
我在网上搜索了解决方案,似乎曾经有一个叫做 Projection 的东西可以解决这个问题,但它不再可以通过 Xamarin.Forms.GoogleMaps 访问。
如果有某种方法可以将纬度和经度之间的坐标转换为屏幕 x 和 y 坐标,那将是最佳选择。
我刚刚在 Android.project 中 Xamarin.Forms.Maps
的 mapRender 中进行了测试,发现您可以在渲染器中使用 Projection
。
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
var projection = NativeMap.Projection;
projection.ToScreenLocation();
projection.FromScreenLocation();
}
if (e.NewElement != null)
{
var formsMap = (CustomMap)e.NewElement;
customPins = formsMap.CustomPins;
Control.GetMapAsync(this);
}
}
然后你可以调用projection.ToScreenLocation();
和projection.FromScreenLocation();
来翻译点数。我认为如果你使用 Xamarin.Forms.GoogleMaps
.
参考:Projection and custom-renderer/map