Swift将CGMutablePath转换为MKPolygon

时间:2016-12-31 21:28:51

标签: swift swift3 mapkit

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

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

2 个答案:

答案 0 :(得分:1)

  

我的问题是如何将此CGMutablePath应用于MKPolygon

你不是。如果您拥有的是一般CGPath,请使用自定义MKOverlay和MKOverlayPathRenderer。

答案 1 :(得分:1)

首先,您需要使用用户触摸点中的积分来构建MKOverlay

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

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

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

mapView.add(overlay)

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

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