如何从MKAnnotationView标注中排除用户位置?

时间:2018-09-19 13:56:38

标签: ios swift mapkit mkmapview mkannotation

我有以下代码:

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if view.annotation is MKUserLocation {
        view.canShowCallout = false
    } else {
        self.locationInfoContainerView.isHidden = false
    }
}

我希望这样做可以做到:当我点击与用户位置不同的注释时,显示容器视图。

此代码的作用是在我点击USERLOCATION时显示容器视图,而不是在单击地图上其他点的注释时显示容器视图(因此正好相反),我尝试将代码反转:

  func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if view.annotation is MKUserLocation {
        self.locationInfoContainerView.isHidden = false
    } else {
        view.canShowCallout = false    
    }
}

但是产生相同的结果。有些人可以对此澄清一下,并帮助我编写所需的行为吗? I.E:在地图注释上点按的位置与地图上的用户位置不同时,显示容器视图。

希望这很清楚,谢谢大家。

2 个答案:

答案 0 :(得分:0)

viewForAnnotation中将标题设置为空

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
  if let userAnnotation = annotation as? MKUserLocation {
    userAnnotation.title = ""
    return nil
  }
}

答案 1 :(得分:0)

解决方案是:

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        if annotation is MKUserLocation {
            return nil 
        }
        :
        :