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. Przesuwane markery można też przesuwać za pomocą gestu długiego naciśnięcia.
- Aby śledzić zdarzenia związane ze znacznikami, dodaj
GMSMapViewDelegatedoview. - Aby umożliwić przeciąganie markera, 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 zidentyfikowano 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ść 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 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 właściwość GMSMarker.draggable na wartość true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;