【问题标题】:To draw polygon on google map with MapKit framework使用 MapKit 框架在谷歌地图上绘制多边形
【发布时间】:2009-08-26 11:42:46
【问题描述】:

我想在地图视图中显示 Google 地图,并在其上绘制多边形/圆。

有什么建议吗?

【问题讨论】:

    标签: ios objective-c mapkit


    【解决方案1】:

    我正在阅读您的问题的方式是您想以编程方式在地图上绘制多边形。为此,请咨询Apple docs on MapKit.

    您无需在 MapKit 地图上添加透明视图 (MKMapView)。您创建一个 overlay 对象,在本例中为 MKPolygon。 (在以下示例中,变量 map 将是您放置此代码的视图控制器拥有的 MKMapView 实例):

    CLLocationCoordinate2D  points[4];
    
    points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116);
    points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066);
    points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981);
    points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267);
    
    MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4];
    poly.title = @"Colorado";
    
    [map addOverlay:poly];
    

    然后,如果您想自定义叠加层的外观(颜色、笔触等),您可以在拥有MKMapView 对象的视图控制器中实现MKMapViewDelegate 协议并提供@ 的实现987654329@:

    - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
    {
        if ([overlay isKindOfClass:[MKPolygon class]])
        {
            MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease];
     
            aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
            aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
            aView.lineWidth = 3;
     
            return aView;
        }
     
        return nil;
    }
    

    当然,请始终记住将地图实例的委托实际分配给您的视图控制器 (MKMapViewDelegate),无论是在界面构建器中,还是在代码中(例如 viewDidLoad)。

    【讨论】:

    • 当然,对于圈子,您可以使用MKCircle 而不是MKPolygon
    【解决方案2】:

    我使用此人博客文章中的想法来完成此任务。它基本上涉及在地图上添加透明视图。然后,地图允许您将位置转换为视图上的点。如果该网站对您没有帮助,请告诉我,我可以尝试从我的代码中挖掘一个示例。

    http://spitzkoff.com/craig/?p=65

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-31
      • 2011-01-20
      • 2020-06-28
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      相关资源
      最近更新 更多