用户位置聚集为注释

时间:2018-04-16 08:08:06

标签: swift mkmapview mkannotation

我正在尝试显示用户位置,但它并没有按我想要的方式工作。 我使用此函数来聚类注释并显示它重新组合的注释数量:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: MKMapViewDefaultClusterAnnotationViewReuseIdentifier , for: annotation)

        annotationView.clusteringIdentifier = "identifier"
        return annotationView
}

问题是:它聚集了"我的位置"由以下内容创建的注释:

showsUserLocation = true

但我不希望用户位置在地图上显示为简单的标记,我想保留showUserLocation"标记"。

我试图像这样抓住它:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: MKMapViewDefaultClusterAnnotationViewReuseIdentifier , for: annotation)

    if annotation.title == "My Location"{
        return nil
    }
    annotationView.clusteringIdentifier = "identifier"
    return annotationView
    }

但它会让应用程序崩溃。

我看过很多关于mapView:clusterAnnotationForMemberAnnotations的帖子,但我不明白如何使用它。

谢谢!

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }
    let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: MKMapViewDefaultClusterAnnotationViewReuseIdentifier , for: annotation)

    annotationView.clusteringIdentifier = "identifier"
    return annotationView
}