我正在按照地图示例https://developer.xamarin.com/samples/xamarin-forms/customrenderers/map/circle/创建自定义渲染器以覆盖圆圈。它似乎适用于所有3个平台,但我无法找到iOS的任何点击事件。
我正在构建一个xamarin表单应用程序,并能够在Android和UWP上找到点击事件,但iOS似乎很遥远。
有什么办法吗?
答案 0 :(得分:0)
iOS不提供检测点击事件的API。
作为替代解决方法,我们可以在地图视图中添加UITapGestureRecognizer
,并判断分接点是否位于圈内。
//xxx
nativeMap.AddOverlay(circleOverlay);
nativeMap.AddGestureRecognizer(new UITapGestureRecognizer(TapHandle));
void TapHandle(UITapGestureRecognizer tap)
{
MKMapView mapView = tap.View as MKMapView;
CGPoint tapPoint = tap.LocationInView(mapView);
CLLocationCoordinate2D tapCoordinate = mapView.ConvertPoint(tapPoint, tap.View);
MKMapPoint point = MKMapPoint.FromCoordinate(tapCoordinate);
foreach(IMKOverlay overlay in mapView.Overlays)
{
MKCircleRenderer render = GetOverlayRenderer(mapView, overlay) as MKCircleRenderer;
CGPoint datPoint = render.PointForMapPoint(point);
render.InvalidatePath();
if (render.Path.ContainsPoint(datPoint,false))
{
break;
}
}
}