問題は、これに関するドキュメントが見つからないということです-同じ場所で注釈をきちんと処理する方法があるかどうかを知っている人はいますか(注釈またはボタンをクリックして注釈を循環させることができます)その場所か何かで)?特定の場所の注釈を循環し、それらに個別にアクセスする方法が必要なだけです。どんな助けや提案も大歓迎です。
func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
//I tried to do a check here for if selectedAnnotation == annotation { somehow cycle to the next annotation in that location } but I guess when you click an already selectedAnnotation, the didDeselect function is run or something
selectedAnnotation = annotation
mapView.setCenter(annotation.coordinate, zoomLevel: 17, animated: true)
}
私の注釈関数は次のようになります。
class AnnotationsVM: ObservableObject {
@Published var annos = [MGLPointAnnotation]()
@ObservedObject var VModel: ViewModel //= ViewModel()
init(VModel: ViewModel) {
self.VModel = VModel
let annotation = MGLPointAnnotation()
annotation.title = "Shoe Store"
annotation.coordinate = CLLocationCoordinate2D(latitude: 40.78, longitude: -73.98)
annotation.subtitle = "10:00AM - 11:30AM"
annos.append(annotation)
}
func addNextAnnotation(address: String) {
let newAnnotation = MGLPointAnnotation()
self.VModel.fetchCoords(address: address) { lat, lon in
if (lat != 0.0 && lon != 0.0) {
newAnnotation.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon)
}
newAnnotation.title = address
newAnnotation.subtitle = "9:00PM - 1:00AM"
if (lat != 0 && lon != 0) {
self.annos.append(newAnnotation)
}
}
}
}
MapView (UIViewRepresentable) 構造体の updateUIView 関数で、annos 配列をマップに追加します。