我需要检查当前用户位置是否在特定区域内,这里我使用了 MKPolygonView
。我在我的 MKMapView
中添加了一条路线,我想检查用户是否在该特定 route 。我尝试了以下代码,但它始终显示我在错误的路径中,即使我在该地区也是如此。
知道我哪里出错了吗?
任何帮助将不胜感激。
谢谢。
BOOL exist = NO;
CLLocationCoordinate2D mapCoordinate = newLocation.coordinate;//user location or annot coord
MKMapPoint mapPoint = MKMapPointForCoordinate(mapCoordinate);
for(MKPolyline *routeLine in overlays)
{
NSLog(@"Overlays array count = %d",overlays.count);
MKPolygonView *polygonView =(MKPolygonView *)[mapView viewForOverlay:routeLine];
CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint];
BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path, NULL, polygonViewPoint, NO);
NSLog(@"mapcoordinate %c",mapCoordinateIsInPolygon);
if(mapCoordinateIsInPolygon)
{
exist = YES;
}
else
{
exist = NO;
}
}
最佳答案
您正在混合使用 MKPolygons 和 MKPolylines。 MKPolyline 有相应的 MKPolylineView - 而不是 MKPolygonView - 即你的转换无效。您应该能够通过在 polygonView 上使用 isKindOfClass 来验证它是什么类型来检查这一点。
据我所知,MKPolyline 不是封闭路径,它不能包含任何内容。有几个选项,但我认为最简单的方法是从 MKPolyline 中的点创建自己的封闭 CGPath 并对其进行测试。
关于iphone - 如何判断 UserLocation 是在 MKPolygonview 中还是在 iOS MKMapView 中的特定区域内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233143/