我想在地图视图上显示谷歌地图,并在其上绘制多边形/圆形。 有什么建议吗?
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];
然后,如果你想自定义叠加层的外观(颜色、描边等),你需要在拥有 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;
}
viewDidLoad
)。
MKCircle
而不是MKPolygon
。 - Nate