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)