Swift 将 CGMutablePath 转换为 MKPolygon

Swift Converting CGMutablePath to MKPolygon

我有一个允许用户绘制自己的地理围栏的应用程序。现在它的工作方式是用户在屏幕上绘制他们的地理围栏,应用程序跟踪他们正在绘制的位置并将他们的路径存储到 CGMutablePath 中。

我的问题是如何获取此 CGMutablePath 并将其应用于 MKPolygon,以便用户手绘地理围栏可以用作地图叠加层?

My question is how can I take this CGMutablePath and apply it to a MKPolygon

你不知道。如果您拥有的是通用 CGPath,请将自定义 MKOverlay 与 MKOverlayPathRenderer 一起使用。

首先,您需要使用您从用户触摸中获得的积分来构建 MKOverlay:

let coords = points.map({ CLLocationCoordinate2D(latitude: Double([=10=].x), longitude: Double([=10=].y)) })
let polygon = MKPolygon(coordinates: coords, count: coords.count)

您可能还需要考虑地图的当前缩放级别,以确保屏幕上的点与 lat/lng 之间的转换是正确的。

接下来,您可以将此叠加层添加到地图中:

mapView.add(overlay)

要设置叠加层的样式(更改其颜色等),请使用 MKMapViewDelegate 方法:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    let renderer = MKPolygonRenderer(overlay: overlay)
    renderer.fillColor = UIColor.blue
    return renderer
}