使用 MapKit 框架在谷歌地图上绘制多边形

Posted

技术标签:

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

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

有什么建议吗?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于使用 MapKit 框架在谷歌地图上绘制多边形的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图上为给定地址绘制多边形

如何使用坐标数组在谷歌地图 API 中绘制多边形?

根据不同的纬度和长度设置谷歌地图的缩放级别

Android,在谷歌地图上绘制路线

在谷歌地图上绘制方向

谷歌地图使用 PHP 在 MySQL 中保存多边形和点