То, что я хочу сделать, это представить поповер с аннотацией, как его вид источника/якорьКак установить MGLAnnotationView в SourceView для пирога
С помощью функции делегата didSelect annotationView я должен быть в состоянии достигнуть этого , но, похоже, он вообще не работает. Сейчас я просто представляя свою поповер через didSelect аннотацию и установить SourceView на навигационной панели, просто для показа его где-то ...
FYI: Я реализовал MapBox SDK в проект , У меня нет проблем с выполнением одной и той же задачи с помощью MapKit.
Кто-нибудь знает, что я могу сделать для достижения этого?
фрагменты кода ниже:
import UIKit
import Mapbox
class ViewController: UIViewController, MGLMapViewDelegate, UIPopoverPresentationControllerDelegate {
@IBOutlet var theMap: MGLMapView!
override func viewDidLoad() {
super.viewDidLoad()
theMap.delegate = self
let point = MGLPointAnnotation()
point.coordinate = CLLocationCoordinate2D(latitude: 55.6, longitude: 13.0)
point.title = "Some place"
point.subtitle = "Malmö, Sweden"
theMap.addAnnotation(point)
}
func mapView(_ mapView: MGLMapView, didSelect annotationView: MGLAnnotationView) {
print("annotation view: ", annotationView)
// this method doesn't seem to get called at all...
// but ideally this is the place to present the popover.
}
func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
print("annotation: ", annotation)
// present the popover
presentPopover()
}
func presentPopover(){
let popover = storyboard?.instantiateViewController(withIdentifier: "MyCalloutVC") as! MyCallout
popover.modalPresentationStyle = UIModalPresentationStyle.popover
popover.popoverPresentationController?.backgroundColor = UIColor.white
popover.popoverPresentationController?.delegate = self
// I would like to set the source anchor to the selected annotation view.
popover.popoverPresentationController?.sourceView = UINavigationBar() // set to nav bar for now...
popover.popoverPresentationController?.permittedArrowDirections = .any
// popover size set in MyCallout
self.present(popover, animated: true)
}
}
Спасибо @ ppoh71 за ваш пояснительный ответ, нужный материал! Я уже в пути. –