【问题标题】:How to whether the UserLocation is inside a MKPolygonview or particular region in iOS MKMapView?如何 UserLocation 是否在 MKPolygonview 或 iOS MKMapView 中的特定区域内?
【发布时间】:2013-01-09 10:28:38
【问题描述】:

我需要检查当前用户位置是否在特定区域内,这里我使用MKPolygonView。我在MKMapView 中添加了一条路线,我想检查用户是否在该特定路线或不是 。我尝试了以下代码,但它始终显示我在错误的路径中,即使我在那个区域。 知道我哪里出错了吗? 任何帮助将不胜感激。 谢谢。

    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;

        }
    }

【问题讨论】:

    标签: iphone ios objective-c mkmapview cllocationmanager


    【解决方案1】:

    您正在将 MKPolygons 与 MKPolylines 混合。一个 MKPolyline 有一个对应的 MKPolylineView - 不是 MKPolygonView - 即你的演员是无效的。您应该可以通过在您的 polygonView 上使用 isKindOfClass 来验证它是什么类型。

    据我所知,MKPolyline 不是封闭路径,它不能包含任何内容。有几个选项,但我认为在您的情况下最简单的一个是从 MKPolyline 中的点创建您自己的封闭 CGPath 并对其进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多