Użyj podklasy GMSAdvancedMarker, aby utworzyć podstawowe lub konkretne funkcje znacznika, jak pokazano poniżej. Jako podklasa GMSMarker klasa GMSAdvancedMarker udostępnia znaczniki o większej ekspresji.
Swift
let camera = GMSCameraPosition( target: coordinate, zoom: 14) let mapID = GMSMapID(identifier: "YOUR_MAP_ID") let options = GMSMapViewOptions() options.camera = camera options.mapID = mapID options.frame = view.bounds let mapView = GMSMapView(options: options) let marker = GMSAdvancedMarker(position: coordinate) marker.map = mapView
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:kCoordinate zoom:16]; GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"YOUR_MAP_ID"]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; options.mapID = mapID; options.frame = self.view.bounds; self.mapView = [[GMSMapView alloc] initWithOptions:options]; GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:kCoordinate]; marker.map = self.mapView;
Usuwanie znacznika zaawansowanego
Podobnie jak w przypadku GMSMarker, możesz usunąć znacznik zaawansowany z mapy, ustawiając właściwość mapy GMSAdvancedMarker na nil. Możesz też usunąć z mapy wszystkie nakładki (w tym zaawansowane znaczniki), wywołując metodę GMSMapView clear.
Swift
let camera = GMSCameraPosition.camera( withLatitude: -33.8683, longitude: 151.2086, zoom: 6 ) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) // ... mapView.clear()
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; mapView = [[GMSMapView alloc] initWithOptions:options]; // ... [mapView clear];
Jeśli chcesz wprowadzić zmiany w znaczniku po dodaniu go do mapy, upewnij się, że masz obiekt GMSAdvancedMarker. Możesz później zmodyfikować znacznik, wprowadzając zmiany w tym obiekcie.
Swift
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSAdvancedMarker(position: position) marker.map = mapView // ... marker.map = nil
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:position]; marker.map = mapView; // ... marker.map = nil;
Możliwości mapy
Właściwość mapCapabilities w GMSMapView dodaje automatyczne sprawdzanie funkcji mapy. Jest to przydatne, gdy chcesz sprawdzić, czy określone funkcje mapy są dostępne, zanim wywołasz konkretne interfejsy API. Funkcja didChangeMapCapabilities obiektu GMSMapViewDelegate jest też wywoływana, gdy zmieniają się możliwości.
To zapytanie określa, czy widok mapy obsługuje znaczniki zaawansowane.
Swift
// ... let advancedMarker: GMSAdvancedMarker = { GMSAdvancedMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462)) }() let marker: GMSMarker = { GMSMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462)) }() func addMarker() { if mapView.mapCapabilities.contains(.advancedMarkers) { advancedMarker.map = mapView } else { marker.map = mapView } } extension MapCapabilities: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didChangeMapCapabilities mapCapabilities: GMSMapCapabilityFlags) { let advancedMarkerAvailable = mapCapabilities.contains(.advancedMarkers) advancedMarker.map = advancedMarkerAvailable ? mapView : nil marker.map = advancedMarkerAvailable ? nil : mapView } }
Objective-C
// ... _advancedMarker = [GMSAdvancedMarker markerWithPosition: kSeattleCoordinates]; _fallbackMarker = [GMSMarker markerWithPosition: kSeattleCoordinates]; - (void)addMarker { if (_mapView.mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers) { _advancedMarker.map = _mapView; } else { _fallbackMarker.map = _mapView; } } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities { BOOL advancedMarkersAvailable = mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers; _advancedMarker.map = advancedMarkersAvailable ? _mapView : nil; _fallbackMarker.map = advancedMarkersAvailable ? nil : _mapView; }