この SO の質問 ( MKMapView のオーバーレイのタッチ イベント) で見つけたものに基づいて、MKPolygon でタップ ジェスチャをインターセプトする方法を実装しました。
iOS 6 に対して Xcode 4.6.3 を使用してビルドされたアプリでは問題なく動作していましたが、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 を返さなくなりました。誰かがこの問題に遭遇したかどうかはわかりませんが、洞察をいただければ幸いです。
ありがとう!