我的地图上有自定义注释,现在我希望能够显示用户位置以及自定义注释。但是,当我显示用户位置时,它使用自定义注释而不是默认的蓝色注释。有没有办法让用户位置使用默认值?
我使用以下命令获取要显示的用户位置:
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
map.showsUserLocation = true
自定义注释是使用以下内容设置的:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let reuseIdentifier = "pin"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseIdentifier)
if annotationView == nil {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseIdentifier)
annotationView?.canShowCallout = false
} else {
annotationView?.annotation = annotation
}
annotationView?.image = UIImage(named: "Marker")
return annotationView
}
谢谢
像下面这样做:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
yourCustomAnnotation = CustomPointAnnotation()
yourCustomAnnotation.pinCustomImageName = "Marker"
yourCustomAnnotation.coordinate = location
yourCustomAnnotationView = MKPinAnnotationView(annotation: yourCustomAnnotation, reuseIdentifier: "pin")
map.addAnnotation(yourCustomAnnotationView.annotation!)
}
我正在处理同样的问题。在“viewFor 注释”委托方法的顶部使用此检查:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard annotation as? MKUserLocation != mapView.userLocation else { return }
这将阻止自定义您的用户位置
你可以在 MKMapViewDelegate 中这样做:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation { return }
// return custom views for other annotations...
}