как настроить массив для нескольких аннотаций с помощью swift
Как должен быть установлен массив ниже. Я пытаюсь добавить несколько аннотаций на свою карту. Я смог найти код ниже на stackoverflow, но они не показали, как настроить массив.
var objects = [
//how should the array be setup here
]
for objecters in objects!{
if let latit = objecters["Coordinates"]["Latitude"]{
self.latitudepoint = latit as! String
self.map.reloadInputViews()
}
else {
continue
}
if let longi = objecters["Coordinates"]["Longitude"]{
self.longitudepoint = longi as! String
self.map.reloadInputViews()
}
else {
continue
}
var annotation = MKPointAnnotation()
var coord = CLLocationCoordinate2D(latitude: Double(self.latitudepoint)!,longitude: Double(self.longitudepoint)!)
mapView.addAnnotation(annotation)
}
1 ответ:
Вы могли бы сделать, например:
let locations = [ ["title": "New York, NY", "latitude": 40.713054, "longitude": -74.007228], ["title": "Los Angeles, CA", "latitude": 34.052238, "longitude": -118.243344], ["title": "Chicago, IL", "latitude": 41.883229, "longitude": -87.632398] ] for location in locations { let annotation = MKPointAnnotation() annotation.title = location["title"] as? String annotation.coordinate = CLLocationCoordinate2D(latitude: location["latitude"] as! Double, longitude: location["longitude"] as! Double) mapView.addAnnotation(annotation) }
Или, в качестве альтернативы, используйте пользовательский тип, например:
struct Location { let title: String let latitude: Double let longitude: Double } let locations = [ Location(title: "New York, NY", latitude: 40.713054, longitude: -74.007228), Location(title: "Los Angeles, CA", latitude: 34.052238, longitude: -118.243344), Location(title: "Chicago, IL", latitude: 41.883229, longitude: -87.632398) ] for location in locations { let annotation = MKPointAnnotation() annotation.title = location.title annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude) mapView.addAnnotation(annotation) }
Или вы можете заменить этот цикл
for
наmap
:let annotations = locations.map { location -> MKAnnotation in let annotation = MKPointAnnotation() annotation.title = location.title annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude) return annotation } mapView.addAnnotations(annotations)