我想在要绘制多边形/圆的地图视图中显示 Google 地图。
有什么建议吗?
我正在阅读您的问题的方式是您想以编程方式在地图上绘制多边形。为此,请参阅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
)。
我使用此人博客文章中的想法来完成此任务。它基本上涉及在地图上添加透明视图。然后,地图允许您将位置转换为视图上的点。如果该网站对您没有帮助,请告诉我,我可以尝试从我的代码中挖掘一个示例。