iphone - 如何判断 UserLocation 是在 MKPolygonview 中还是在 iOS MKMapView 中的特定区域内?

标签 iphone ios objective-c mkmapview cllocationmanager

我需要检查当前用户位置是否在特定区域内,这里我使用了 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/

相关文章:

ios - 在 iOS Swift 2 中实现 "Read More"按钮以展开 UITextView 的最简单方法?

ios - 我可以使用 XCTest 测试应用程序中某一部分的性能吗?

ios - 如何清除ImageView?

iOS 6 为 View 大小设置动画并限制移动其他 View

ios - 解析 UICollectionView 的查询不工作

ios - 如何将视频直接上传到 AWS S3 Version 2?示例应用程序不够有用

iphone - 我如何从 iOS 框架中删除或重命名符号?

iphone - 如何使用 UIGesture 将 UIImage 添加到应用程序中的大多数 View 。

iphone - iphone 中的 UIButton 事件

iphone - 播放短音效