创建覆盖MKMapView中当前区域的方形叠加

Ste*_*ett 1 mkmapview ios mkoverlay mkpolygon ios7

如何创建一个覆盖MKMapView当前区域的Square Overlay.我的MKMapView设置了用户当前位置的坐标,但它们是中心坐标.如何计算方形坐标,以便创建一个完全适合当前视图的方形叠加?

多谢你们!

vig*_*o24 6

您可以使用centerCoordinateregion属性,MKMapView然后MKPolygon通过提取四个角来创建叠加,如下面的代码所示:

    vertex[0]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    vertex[1]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[2]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[3]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    MKPolygon *square = [MKPolygon polygonWithCoordinates:vertex count:4];
Run Code Online (Sandbox Code Playgroud)

然后将多边形添加为叠加:

[map addOverlay:square]
Run Code Online (Sandbox Code Playgroud)

最后,在您的mapView:rendererForOverlay:基础上定义基于多边形叠加层渲染的正方形:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {  
    if([overlay isKindOfClass:[MKPolygon class]]) {
        MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:(MKPolygon *)overlay];
        renderer.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.25];
        return renderer;
    } else {
        return nil;
    }    
}
Run Code Online (Sandbox Code Playgroud)