Gdy ustawisz określone zaawansowane właściwości markera, możesz monitorować zdarzenia markera, takie jak kliknięcia i gesty. Po kliknięciu znacznika można wyświetlić dodatkowe informacje, takie jak tytuł znacznika lub krótki opis. Przeciągalne znaczniki można też przesuwać za pomocą gestu przytrzymania.
- Aby śledzić zdarzenia znacznika, dodaj
GMSMapViewDelegatedoview. - Aby można było przeciągać znacznik, ustaw właściwość
GMSMarker.draggable. - Aby ustawić tekst opisowy znacznika, użyj właściwości
GMSMarker.title.
Odpowiadanie na wydarzenia związane ze znacznikami
Możesz reagować na zdarzenia znacznika, dodając do widoku protokół GMSMapViewDelegate i wdrażając odpowiednie wywołanie zwrotne. W tym przykładzie zidentyfikowano 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 znacznika na podstawie poziomu powiększenia mapy
Aby kontrolować widoczność elementu GMSMarker, zaimplementuj protokół GMSMapViewDelegate i dodaj warunek, aby ustawić 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; }
Umożliwianie przeciągania znacznika
Gdy włączysz usługę draggable, użytkownicy będą mogli przeciągać znaczniki na mapie za pomocą gestu długiego naciśnięcia. Aby umożliwić przeciąganie markera, ustaw właściwość GMSMarker.draggable na wartość true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;