Po ustawieniu określonych właściwości zaawansowanych znaczników możesz monitorować zdarzenia związane ze znacznikiem, takie jak kliknięcia i gesty. Po kliknięciu znacznika pojawią się dodatkowe informacje, np. jego tytuł lub fragment. Znaczniki, które można przeciągać, można też przesuwać, naciskając i przytrzymując znaczniki.
- Aby śledzić zdarzenia znacznika, dodaj
GMSMapViewDelegate
do:view
. - Aby umożliwić przeciąganie znacznika, ustaw właściwość
GMSMarker.draggable
. - Aby ustawić tekst opisu znacznika, użyj właściwości
GMSMarker.title
.
Odpowiadanie na zdarzenia związane ze znacznikiem
Aby odpowiedzieć na zdarzenia oznaczone jako znaczniki, dodaj do widoku protokół GMSMapViewDelegate
i zaimplementuj odpowiednie wywołanie zwrotne. Ten przykład identyfikuje title
i snippet
wybranego znacznika.
Swift
// MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { if let title = marker.title { if let snippet = marker.snippet { print("marker title: \(title): snippet: \(snippet)") } } return true }
Objective-C
// MARK: GMSMapViewDelegate - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker { if (marker.title && marker.snippet) { NSLog(@"marker with title:%@ snippet: %@", marker.title, marker.snippet) } return YES; }
Kontrolowanie widoczności znaczników według poziomu powiększenia mapy
Aby kontrolować widoczność obszaru GMSMarker
, wdróż protokół GMSMapViewDelegate
i dodaj warunek ustawiający GMSMarker.map
.
Swift
// MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) { marker.map = position.zoom >= 14 ? mapView : nil }
Objective-C
// MARK: GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { marker.map = position.zoom >= 14 ? mapView : nil; }
Dodawanie znacznika do przeciągania
Po włączeniu właściwości draggable
użytkownicy mogą przeciągać znaczniki na mapie gestami opartymi na długim naciśnięciu. Aby umożliwić przeciąganie znacznika, ustaw we właściwości GMSMarker.draggable
wartość true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;