Принудительно показать аннотацию на карте - PullRequest
0 голосов
/ 07 мая 2020

Как я могу заставить аннотацию карты всегда отображаться?

Я размещаю два типа аннотаций в MKMapview. Один - это стандартный штифт, который применяется только к одной координате. Вторая аннотация - это настраиваемый значок, который будет размещен еще в 20 местах. Я обнаружил, что все значки размещены нормально, но стандартная аннотация всегда изначально скрыта (возможно, путем кластеризации - но кажется, что она скрыта, даже если для ее отображения достаточно места). Когда я увеличиваю масштаб, я вижу стандартный значок.

Кроме того, как пометить пользовательскую аннотацию, чтобы ее заголовок отображался постоянно (т.е. не только при нажатии)?

Начальный экран:

enter image description here

Увеличенный экран:

enter image description here

Моя пользовательская аннотация класс:

    class MapMarker: NSObject, MKAnnotation {
    let title: String?
    let coordinate: CLLocationCoordinate2D
    var image = UIImage(named: "diamond")

    init(title: String, coordinate: CLLocationCoordinate2D) {
        self.title = title
        self.coordinate = coordinate
        //self.image
        super.init()
    }
}

Мой код размещения аннотации:

func showAnnotationsOnMap() -> Void {
        //positions tide station and all nearest diamonds on the map, finally highlights the nearest tide diamond on the map

        for diamond in nearestDiamonds {
            //only show diamonds if the reference station exists (removes some french/dutch tide diamonds
            if tideStations.getTideStation(stationID: diamond.refStationId!) != nil {
                let latitude = CLLocationDegrees(diamond.lat!)
                let longitude = CLLocationDegrees(diamond.long!)

                let marker = MapMarker(title: diamond.id!, coordinate: CLLocationCoordinate2D(latitude: latitude, longitude: longitude))
                mapView.addAnnotation(marker)
            }

        }

        //TODO: figure out how to force display of Tide Station marker so it is not clustered out
        let annotation = MKPointAnnotation()
        annotation.title = userData.currentSelection.station.name
        let lattitude = CLLocationDegrees(userData.currentSelection.station.lat)
        let longitude = CLLocationDegrees(userData.currentSelection.station.long)
        annotation.coordinate = CLLocationCoordinate2D(latitude: lattitude, longitude: longitude)
        mapView.addAnnotation(annotation)

        //highlight the nearest diamond
        mapView.selectAnnotation(mapView.annotations[0], animated: true)

    }

...