Gdy ustawisz określone zaawansowane właściwości znacznika, możesz monitorować zdarzenia znacznika, takie jak kliknięcia i gesty. Po kliknięciu znacznika można wyświetlić dodatkowe informacje, takie jak tytuł znacznika lub krótki opis. Przesuwane markery można też przesuwać za pomocą gestu długiego naciśnięcia.
- Aby śledzić zdarzenia związane ze znacznikami, 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 zdarzenia związane ze znacznikami
Możesz odpowiadać na zdarzenia znacznika, dodając do widoku protokół GMSMapViewDelegate i wdrażając odpowiednie wywołanie zwrotne. W tym przykładzie określono title i snippet wybranego markera.
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; }
Sterowanie widocznością znacznika na podstawie poziomu powiększenia mapy
Aby kontrolować widoczność elementu GMSMarker, zaimplementuj protokół GMSMapViewDelegate i dodaj warunek, aby ustawić element 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 markera
Gdy włączysz właściwość 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 wartość właściwości GMSMarker.draggable na true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;