Я только начал развиваться в iOS. Извините, если проблема кажется тривиальной:Mapbox iOS SDK 3.1 Как сделать заметку аннотации липкой
Загрузите несколько маркеров/аннотаций через SwiftyJSON из API и отобразите их на Mapbox MapView. При нажатии на аннотацию вызывается выноска. - Это прекрасно и просто, как ад. Проблема: Я хотел бы, чтобы центрировать MAPview на маркер/аннотирования и выноски или перемещать камеру, чтобы показать их в центре, увеличено Всякий раз, когда я использую что-то вроде этого:.
let camera = MGLMapCamera(lookingAtCenterCoordinate: annotation.coordinate, fromDistance: 1000, pitch: 0, heading: 0)
mapView.setCamera(camera, withDuration: 2, animationTimingFunction: CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut))
или
mapView.setCenterCoordinate(annotation.coordinate, zoomLevel: 15, animated: true)
Выноска остается в том же положении. То, что я хотел бы добиться, заключается в том, что оно отображается липким поверх аннотации/маркера.
Это мой полный код для этой части (здания аннотаций в viewdidload не входит:.
func mapView(mapView: MGLMapView, imageForAnnotation annotation: MGLAnnotation) -> MGLAnnotationImage? {
var annotationImage = mapView.dequeueReusableAnnotationImageWithIdentifier("marker_live")
if annotationImage == nil {
// Leaning Tower of Pisa by Stefan Spieler from the Noun Project
var image = UIImage(named: "marker_live")!
image = image.imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, image.size.height/2, 0))
annotationImage = MGLAnnotationImage(image: image, reuseIdentifier: "marker_live")
}
return annotationImage
}
func mapView(mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
print("tap on annotation")
mapView.selectAnnotation(annotation, animated: true)
return true
}
func mapView(mapView: MGLMapView, calloutViewForAnnotation annotation: MGLAnnotation) -> UIView? {
return CustomCalloutView(representedObject: annotation)
}
func mapView(mapView: MGLMapView, tapOnCalloutForAnnotation annotation: MGLAnnotation) {
print("Tapped the callout for: \(annotation.title!)")
self.performSegueWithIdentifier("PlaylistFromMap", sender: annotation.title!)
mapView.deselectAnnotation(annotation, animated: true)
}
Я также думал об использовании обработчика завершения, но не понял, как это работает Помощь много оценили!
До сих пор понял ... но как я могу обнаружить прикосновение к аннотации? Пока есть два делегата -mapView: didSelectAnnotation: и -mapView: annotationCanShowCallout: я использовал для обнаружения касания. С первым я могу вызвать движение камеры и после выбора аннотации (снова) после завершения Handler. Со вторым я мог показать выноску. Как я могу запускать камеру и выбор без фактического выбора аннотации в первую очередь? – lightwaver
Вы не можете - по крайней мере, не с любым способом, предоставляемым SDK Mapbox iOS. – friedbunny
Моя проблема в том, что я использую 'selectAnnotation' для запуска камеры ... так что мне нужен способ запуска камеры отдельно или выноска. Любые подсказки, что я мог бы найти? – lightwaver