Gdy ustawisz określone właściwości znacznika zaawansowanego, możesz monitorować zdarzenia znacznika takie jak kliknięcia i gesty. Jeśli klikniesz znacznik, zobaczysz dodatkowe informacje, takie jak tytuł lub fragment znacznika. Możesz też przesuwać znaczniki, które można przeciągać, za pomocą gestu długiego naciśnięcia.
- 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 zdarzenia znacznika
Możesz odpowiadać na zdarzenia znacznika przez dodanie
protokołu GMSMapViewDelegate do widoku i
implementację odpowiedniego wywołania zwrotnego. 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; }
Sterowanie widocznością znacznika według poziomu powiększenia mapy
Aby kontrolować widoczność GMSMarker, zaimplementuj protokół
GMSMapViewDelegate i dodaj warunek ustawienia
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; }
Ustawianie znacznika jako przeciąganego
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 można było przeciągać znacznik, ustaw właściwość GMSMarker.draggable na true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;