gpt4 book ai didi

swift - 如何在 MapView 上绘制两个 MKPolygon,而不让它们连接?

转载 作者:行者123 更新时间:2023-11-30 10:27:56 26 4
gpt4 key购买 nike

出于某种原因,当我尝试在 map View (MKMapView)上绘制两个 MKPolygon 时,我最终得到了两个连接的多边形。单独绘制每个多边形效果很好。我已经验证每个多边形不包含任何坐标来形成两者之间的连接。 I've attached an image with the two polygons connected

作为引用,这是我调用添加多边形的地方。

func addPeakTimePolygon(from coordinatesArray: [CLLocationCoordinate2D], title: Int){
let polygon = MKPolygon(coordinates: coordinatesArray, count: coordinatesArray.count)
polygon.title = String(title)
//Should refactor to use .contains(where:
var shouldAdd = true
for polygon in self.currentPolygons{
if polygon.title == String(title){
shouldAdd = false
}
}
if shouldAdd{
self.currentPolygons.append(polygon)
self.mapView.add(polygon)
}
}

这是我的 rendererFor 代码:

 func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = #colorLiteral(red: 0, green: 0.6862745098, blue: 0.7607843137, alpha: 1)
renderer.lineWidth = 5.0
return renderer
}
else if overlay is MKPolygon {
let renderer = MKPolygonRenderer(overlay: overlay)
renderer.fillColor = UIColor.red.withAlphaComponent(0.5)
renderer.strokeColor = UIColor.red
renderer.lineWidth = 2
return renderer
}
return MKOverlayRenderer()
}

最佳答案

看起来您正在制作由两个多边形组成的一个叠加层。你不能用 MKPolygonRenderer 来做到这一点;正如您所观察到的,您将得到一个多边形。

您将需要单独的叠加层,每个多边形一个。除非你使用的是iOS 13!在这种情况下,您很幸运:iOS 13 中的新增功能可以将多个多边形或多段线组合成 MKMultiPolygon 或 MKMultiPolyline,并由 MKMultiPolygonRenderer 或 MKMultiPolylineRenderer 绘制。

关于swift - 如何在 MapView 上绘制两个 MKPolygon,而不让它们连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59743646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com