5

我想在要绘制多边形/圆的地图视图中显示 Google 地图。

有什么建议吗?

4

2 回答 2

6

我正在阅读您的问题的方式是您想以编程方式在地图上绘制多边形。为此,请参阅MapKit 上的 Apple 文档。

您不需要在 MapKit 地图 ( MKMapView) 上添加透明视图。您创建一个覆盖对象,在本例中是一个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];

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

- (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)。

于 2012-05-15T07:00:22.503 回答
1

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

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

于 2009-10-14T19:59:11.657 回答