检测一个点是否在iPhone sdk ios 7中的MKCircle内部

ami*_*c09 5 iphone geometry mapkit ios

我为我添加了一个MKCircle叠加层mapview,我想知道一个点(点击屏幕)是否在圆圈内.这是我的代码:

- (BOOL)pointInsideOverlay:(CLLocationCoordinate2D )tapPoint overlay:(id<MKOverlay>)overlay  {

   BOOL isInside = FALSE;
   MKPolygonView *polygonView = (MKPolygonView *)[self.mapView viewForOverlay:overlay];
   MKMapPoint mapPoint = MKMapPointForCoordinate(tapPoint);
   CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint];
   BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path, NULL, polygonViewPoint, NO);

   if (mapCoordinateIsInPolygon) {
       isInside = TRUE;
   }
   return isInside;
}
Run Code Online (Sandbox Code Playgroud)

viewForOverlay,pointForMapPoint&path已弃用.这是问题吗?

谢谢.

Har*_*ari 11

这个apporach也应该工作,使用MKCircleRenderer:

    MKCircleRenderer *circleRenderer = (MKCircleRenderer *)[mapview rendererForOverlay:circleOverlay];
    [circleRenderer invalidatePath];

    MKMapPoint mapPoint = MKMapPointForCoordinate(tapPoint);
    CGPoint circlePoint = [circleRenderer pointForMapPoint:mapPoint];
    BOOL mapCoordinateIsInCircle = CGPathContainsPoint(circleRenderer.path, NULL, circlePoint, NO);

    if ( mapCoordinateIsInCircle )

    {
        //do something
    }
Run Code Online (Sandbox Code Playgroud)