根据我在这个 SO 问题上的发现(MKMapView's overlays 上的触摸事件),我实现了一种拦截 MKPolygon 上的点击手势的方法。
它在我们使用 Xcode 4.6.3 针对 iOS 6 构建的应用程序中运行良好。但是,当我在 iOS 7 设备上尝试它时,一切都停止了。
具体来说
CLLocationCoordinate2D coord = [neighborhoodMap_ convertPoint:point
toCoordinateFromView:neighborhoodMap_];
// We get view from MKMapView's viewForOverlay.
MKPolygonView *polygonView = (MKPolygonView*) view;
CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint];
BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path,
NULL,
polygonViewPoint,
NO);
由于某种原因,即使给定坐标在 MKPolygonView 内,对 CGPathContainsPoint 的调用也不再返回 YES。不确定是否有人遇到过这个问题,但我会很感激你的任何见解。
谢谢!