所以我可以创建我贴在地图上的注释,我可以创建叠加,比如多边形或折线,并使用默认渲染器在地图上绘制。一切都按预期工作。
我甚至可以创建一个带有方向绘制的自定义图像的注释视图。问题是,我无法在地图旋转时收到通知,但只有在旋转完成时才会收到通知,并且我想在地图旋转时更改我的注释视图(因为我的注释涉及方向)。
所以我想,嘿,当地图旋转时,多边形和线条会重新定向,所以我会将我的注释更改为叠加层。问题是,我无法让我的自定义渲染器绘制任何东西。
为了测试,我创建了一个MKPolylineRenderer
的子类并覆盖了draw方法。并查看该行的坐标:
self.polyline.points()[0]
我觉得它很好,例如,
MKMapPoint(x: 263670550.06153709, y: 169200197.90301803)
但每次我尝试将该地图点转换为CGPoint时,y坐标始终为0,而x坐标似乎太大了:
let point = self.point(for: self.polyline.points()[0])
-> (52506.4039975107, 0.0)
如果我调用我的超类的绘制方法,我可以看到我的折线,第一点绝对不是在y = 0,但我无法在我的重写方法中得到任何东西(再次,似乎是因为注册问题,但不确定)。我遵循了这个建议:
Custom MKOverlayRenderer drawMapRect function not drawing polygons
有什么想法吗?
答案 0 :(得分:0)
在MKMapViewDelegate方法中,您有一个可以帮助您的功能。在我的应用中,我以这种方式管理它。
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let overlayRenderer = MKCircleRenderer(circle: overlay as! MKCircle)
overlayRenderer.fillColor = UIColor.green
overlayRenderer.alpha = 0.2
return overlayRenderer
}
在用于定位我的用户的函数中:
//Overlays
let circleDraw = MKCircle(center: coordinates, radius:
UI_mapView.add(circleDraw)
希望有所帮助。