我有安装应用程序,允许用户绘制自己的地理围栏。现在它的工作方式是用户在屏幕上绘制地理围栏,应用程序跟踪他们绘制的位置并将其路径存储到CGMutablePath中。
我的问题是如何将此CGMutablePath应用于MKPolygon,以便用户手绘地理围栏可以应用为地图叠加?
答案 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
}