用MapKit框架在Google地图上绘制多边形
我想在地图视图中显示Google地图,在该地图视图上要绘制多边形/圆形。
有什么build议?
我正在阅读你的问题的方式是,你想以编程方式在地图上绘制多边形。 为此,请参阅MapKit上的Apple文档。
您不需要在MapKit映射( MKMapView
)上添加透明视图。 你创build一个覆盖物体,在这个例子中是一个MKPolygon
。 (在以下示例中,variablesmap
将是您将该代码放置在视图控制器中的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
协议,并提供一个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; }
当然,一定要记住在界面构build器或代码中(如viewDidLoad
)将地图实例的委托实际分配给视图控制器(MKMapViewDelegate)。
我使用这个人的博客文章的想法来实现这一点。 它基本上涉及在地图上添加一个透明的视图。 然后,地图允许您将位置转换为视图上的点。 让我知道,如果该网站不帮你,我可以尝试从我的代码中挖出一个例子。