Передать информацию в MapKit
У меня есть POI в словаре:
["_id": "12345ACB", "title": "Some Shop Place", "category": "Shop", "latitude": 12.345677, "longitude": 21.12348], ...
и у меня есть функция для добавления аннотаций:
func addPlaces() {
for poi in pois {
let pin = MKPointAnnotation()
if let loc = poi["location"] as? NSDictionary {
pin.coordinate = CLLocationCoordinate2D(latitude: (loc["lat"] as? Double)!, longitude: (loc["lng"] as? Double)!)
}
if let cat = poi["_category"] as? NSDictionary {
pin.subtitle = cat["name"] as? String
}
pin.title = poi["title"] as? String
mapView.addAnnotation(pin)
}
}
а также функцию выноски:
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let info = view.annotation
let placeName = info?.title
let placeInfo = info?.subtitle
let ac = UIAlertController(title: placeName!, message: placeInfo!, preferredStyle: .actionSheet)
ac.addAction(UIAlertAction(title: "Open", style: .default, handler: { (UIAlertAction) in
// Here I need POI's _ID
self.performSegue(withIdentifier: "DealsSegue", sender: self)
}))
present(ac, animated: true)
}
Итак, в действии для предупреждения мне нужно _id из словаря POI для конкретного (постучал) пин?
Спасибо
1 ответ
var catId: String? // catId objects in MKPointAnnotation Class
pin.catId = cat["_id"] as? String
let placeId = info?.catId
let alertStr = String(format: "%@ %@", placeId!, placeInfo!,) // Your id and Your message
let ac = UIAlertController(title: placeName!, message: alertStr, preferredStyle: .actionSheet)
ac.addAction(UIAlertAction(title: "Open", style: .default, handler: { (UIAlertAction) in
// Here I need POI's _ID
self.performSegue(withIdentifier: "DealsSegue", sender: self)
}))