Как я могу заставить аннотацию карты всегда отображаться?
Я размещаю два типа аннотаций в MKMapview. Один - это стандартный штифт, который применяется только к одной координате. Вторая аннотация - это настраиваемый значок, который будет размещен еще в 20 местах. Я обнаружил, что все значки размещены нормально, но стандартная аннотация всегда изначально скрыта (возможно, путем кластеризации - но кажется, что она скрыта, даже если для ее отображения достаточно места). Когда я увеличиваю масштаб, я вижу стандартный значок.
Кроме того, как пометить пользовательскую аннотацию, чтобы ее заголовок отображался постоянно (т.е. не только при нажатии)?
Начальный экран:
Увеличенный экран:
Моя пользовательская аннотация класс:
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)
}