在iOS MapKit中,当地图旋转时,如何为注释设置动画?

时间:2017-11-08 22:15:09

标签: ios swift mapkit

所以我可以创建我贴在地图上的注释,我可以创建叠加,比如多边形或折线,并使用默认渲染器在地图上绘制。一切都按预期工作。

我甚至可以创建一个带有方向绘制的自定义图像的注释视图。问题是,我无法在地图旋转时收到通知,但只有在旋转完成时才会收到通知,并且我想在地图旋转时更改我的注释视图(因为我的注释涉及方向)。

所以我想,嘿,当地图旋转时,多边形和线条会重新定向,所以我会将我的注释更改为叠加层。问题是,我无法让我的自定义渲染器绘制任何东西。

为了测试,我创建了一个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

有什么想法吗?

1 个答案:

答案 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)

希望有所帮助。