ios - 在 MKMapView 中创建覆盖当前区域的方形叠加层

标签 ios ios7 mkmapview mkoverlay mkpolygon

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

多谢你们!

最佳答案

您可以使用 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];

然后将多边形添加为叠加层:
[map addOverlay:square]

最后在你的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;
    }    
}

关于ios - 在 MKMapView 中创建覆盖当前区域的方形叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449708/

相关文章:

ios - 自定义 map 标注 View 在点击时隐藏

ios - 如何在 MKMapView 上显示默认位置指示器

ios - 对于 Swift 2.2 的循环更新抛出二元运算符错误

ios - 我可以在 UITableView 中添加带有虚拟数据的临时单元格吗?

ios - 如果打开谷歌地图或打开电话栏,LaunchScreen 中的标签显示不正确

iOS - 如何在应用程序中使 iPhone 静音/响铃

ios 7 datePicker 项目上有不需要的白色背景,可能是错误

ios4 - 如何在 MKMapView 中显示两种不同颜色的引脚注释?

ios - 如何为用户输入文本时动态创建的每个单元格设置按钮操作(Swift 4)?

iphone - UISearchBar inputAccessoryView 的问题