应该如何设置下面的数组.我试图在我的地图上添加多个注释.我能够在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) }
解决方法
你可以做,例如:
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,latitude: 40.713054,longitude: -74.007228),Location(title: "Los Angeles,latitude: 34.052238,longitude: -118.243344),Location(title: "Chicago,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) }
或者您可以使用map替换for循环:
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)