Xamarin形成地图坐标
我有两个关于xamarin表单映射的问题。 1.拖动地图后,如何获取地图中心的坐标(长、纬度)? 2.可以从地图上的点击事件获取坐标吗Xamarin形成地图坐标,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有两个关于xamarin表单映射的问题。 1.拖动地图后,如何获取地图中心的坐标(长、纬度)? 2.可以从地图上的点击事件获取坐标吗 谢谢。您需要自定义地图渲染器 以下是如何获取Android地图上的点击坐标: public class CustomImportantPlaceRenderer : MapRenderer, IOnMapReadyCallback { GoogleMap map; protected override void OnElementChanged
谢谢。您需要自定义地图渲染器 以下是如何获取Android地图上的点击坐标:
public class CustomImportantPlaceRenderer : MapRenderer, IOnMapReadyCallback
{
GoogleMap map;
protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
{
if (map != null)
{
map.MapClick -= googleMap_MapClick;
}
base.OnElementChanged(e);
if (Control != null)
{
Control.GetMapAsync(this);
}
}
public void OnMapReady(GoogleMap googleMap)
{
map = googleMap;
if (map != null)
{
map.UiSettings.ZoomControlsEnabled = false;
map.MapClick += googleMap_MapClick;
map.MyLocationEnabled = true;
}
}
private void googleMap_MapClick(object sender, GoogleMap.MapClickEventArgs e)
{
double latitude = e.Point.Latitude;
double longitude = e.Point.Longitude;
MessagingCenter.Send<String, ClickedPositionCO>("PositionClicked", "PositionClickedDetail", new ClickedPositionCO(latitude, longitude));
}
}
公共类CustomImportantPlaceRenderer:MapRenderer,IOnMapReadyCallback
{
谷歌地图;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
if(map!=null)
{
map.MapClick-=googleMap\u MapClick;
}
基础。一个要素发生变化(e);
if(控件!=null)
{
GetMapAsync(this);
}
}
4月1日公开作废(谷歌地图谷歌地图)
{
地图=谷歌地图;
if(map!=null)
{
map.UiSettings.ZoomControlsEnabled=false;
map.MapClick+=googleMap\u MapClick;
map.MyLocationEnabled=true;
}
}
私有void googleMap_MapClick(对象发送者,googleMap.MapClickEventArgs e)
{
双纬度=东点纬度;
双经度=e.点经度;
MessagingCenter.Send(“已点击位置”、“已点击位置详情”、新点击位置CO(纬度、经度));
}
}
这就是如何在地图上为iOS获取点击坐标
public class CustomImportantPlaceRenderer : MapRenderer
{
private readonly UITapGestureRecognizer tapRecognizer;
public CustomImportantPlaceRenderer()
{
tapRecognizer = new UITapGestureRecognizer(OnTap)
{
NumberOfTapsRequired = 1,
NumberOfTouchesRequired = 1
};
}
private void OnTap(UITapGestureRecognizer recognizer)
{
var cgPoint = recognizer.LocationInView(Control);
var location = ((MKMapView)Control).ConvertPoint(cgPoint, Control);
MessagingCenter.Send<String, ClickedPositionCO>("PositionClicked", "PositionClickedDetail", new ClickedPositionCO(location.Latitude, location.Longitude));
}
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
if (Control != null)
{
Control.RemoveGestureRecognizer(tapRecognizer);
}
base.OnElementChanged(e);
if (Control != null)
{
var nativeMap = Control as MKMapView;
nativeMap.ShowsUserLocation = true;
Control.AddGestureRecognizer(tapRecognizer);
}
}
公共类CustomImportantPlaceRenderer:MapRenderer
{
专用只读UITapGestureRecognizer tapRecognizer;
public CustomImportantPlaceRenderer()
{
tapRecognizer=新的UITapGestureRecognizer(OnTap)
{
NumberOfTapsRequired=1,
NumberOfTouchesRequired=1
};
}
专用void OnTap(UITapGestureRecognitor识别器)
{
var cgPoint=识别器。位置视图(控制);
变量位置=((MKMapView)控件).ConvertPoint(cgPoint,控件);
MessagingCenter.Send(“已单击位置”、“已单击位置详细信息”,新建已单击位置CO(位置.纬度,位置.经度));
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
if(控件!=null)
{
控制。RemoveGestureRecognizer(tapRecognizer);
}
基础。一个要素发生变化(e);
if(控件!=null)
{
var nativeMap=作为MKMapView的控件;
nativeMap.ShowsUserLocation=true;
Control.AddGestureRecognitor(TapRecognitor);
}
}
Ok,但是如果map是通过“new map()”在PCL中创建的,我该怎么做?您能写一些代码来说明dependencyService如何使用它吗?谢谢。