使用 Swift 在 MapView 上绘制多边形
Posted
技术标签:
【中文标题】使用 Swift 在 MapView 上绘制多边形【英文标题】:Draw polygon on MapView using Swift 【发布时间】:2019-10-08 21:20:13 【问题描述】:我有一个MKMapView
,还有一组我想用多边形连接起来绘制一个矩形的坐标。下面是我开始使用的代码。
import UIKit
import MapKit
class mapViewViewController: UIViewController
@IBOutlet var map: MKMapView!
override func viewDidLoad()
super.viewDidLoad()
map?.delegate=self
let startingPoint1 = ...
let startingPoint2 = ...
let endingPoint1 = ...
let endingPoint2 = ...
var coordinateInput:[CLLocationCoordinate2D]=[startingPoint1,startingPoint2,endingPoint1,endingPoint2]
let line = MKPolygon(coordinates:&coordinateInput, count:4)
map.addOverlay(line)
extension mapViewViewController: MKMapViewDelegate
func map(_ map: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
if overlay is MKPolygon
let renderer = MKPolygonRenderer(polygon: overlay as! MKPolygon)
renderer.fillColor=UIColor.red.withAlphaComponent(0.5)
renderer.strokeColor=UIColor.orange
renderer.lineWidth=4
return renderer
return MKOverlayRenderer()
我遇到的问题是,当我启动地图视图时,地图顶部没有按预期显示任何内容。我已经确认我的所有坐标都是有效的,并且是我想要的,但是我当前的设置并没有像我预期的那样在地图上绘制。实现此目的的正确方法是什么?
【问题讨论】:
【参考方案1】:rendererFor
的签名不正确。在您的方法中添加断点或日志语句,您将看到它没有被调用。
正确的签名是:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer ...
【讨论】:
以上是关于使用 Swift 在 MapView 上绘制多边形的主要内容,如果未能解决你的问题,请参考以下文章
如何在不连接它们的情况下在 MapView 上绘制两个 MKPolygons?
是否可以在 ios 的 mapView 上集群 MKPolygon
如何在 MKMapSnapshotter 上绘制 CLLocationCoordinate2Ds(在 mapView 打印图像上绘制)