用户位置更改时调用mapView(_:viewFor :)

时间:2019-06-20 20:43:31

标签: swift annotations mapkit core-location

我希望将用户位置显示为自定义图像(而不是蓝色信标)。我还希望每当用户位置更改其坐标时,都将相应旋转此自定义图像以表示用户路线。为了实现这一点,我实现了以下代码。启动应用程序时,将使用注释类型userLocation调用它,以便可以很好地显示用户位置自定义图像。问题是,当我模拟用户位置坐标的更改时,永远不会使用注释类型userLocation再次调用委托mapView(_:viewFor :)方法,因此图像永远不会旋转。 (注意:UIImage rotationImage(by :)是自定义方法)。

是否有一些方法可以调用mapView(_:viewFor :),以便在用户位置更改时可以更新用户位置的图像注释?感谢您的帮助。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation.isEqual(mapView.userLocation) {
        // Annotation image for user location
        let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: nil)
        annotationView.image = UIImage(named: "UserLocationImage.png")?.rotateImage(by: currentCourse)
        return annotationView  
    }
}

1 个答案:

答案 0 :(得分:0)

使用CLLocationManagerDelegate https://developer.apple.com/documentation/corelocation/cllocationmanagerdelegate 在您的代码中实现此协议,然后将mapView函数放入其locationManager(_:didUpdateLocations :)方法中。