یک نشانگر پیشرفته ایجاد کنید

پلتفرم را انتخاب کنید: Android iOS JavaScript

همانطور که در زیر نشان داده شده است از زیر کلاس GMSAdvancedMarker برای ایجاد ویژگی های اصلی یا خاص نشانگر استفاده کنید. به عنوان زیر کلاس GMSMarker ، GMSAdvancedMarker نشانگرهایی را با بیان بیشتری ارائه می دهد.

سویفت

let camera = GMSCameraPosition( target: coordinate, zoom: 14)
let mapID = GMSMapID(identifier: "YOUR_MAP_ID")
let mapView = GMSMapView(frame: view.bounds, mapID: mapID, camera: camera)

let marker = GMSAdvancedMarker(position: coordinate)
marker.map = mapView

هدف-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:kCoordinate zoom:16];
GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:"YOUR_MAP_ID"];

self.mapView = [GMSMapView mapWithFrame:self.view.bounds mapID:mapID camera:camera];

GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:kCoordinate];
Marker.map = self.mapView;

یک نشانگر پیشرفته را بردارید

مشابه GMSMarker ، می توانید با تنظیم ویژگی نقشه GMSAdvancedMarker بر روی nil ، یک نشانگر پیشرفته را از نقشه حذف کنید. همچنین، می‌توانید با فراخوانی روش clear GMSMapView ، همه پوشش‌ها (از جمله نشانگرهای پیشرفته) را روی نقشه حذف کنید.

سویفت

let camera = GMSCameraPosition.camera(
  withLatitude: -33.8683,
  longitude: 151.2086,
  zoom: 6
)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
// ...
mapView.clear()
      

هدف-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
// ...
[mapView clear];
      

اگر می خواهید پس از افزودن نشانگر به نقشه، تغییراتی در آن ایجاد کنید، مطمئن شوید که شی GMSAdvancedMarker را نگه دارید. بعداً می‌توانید با ایجاد تغییرات در این شی، نشانگر را تغییر دهید.

سویفت

let position = CLLocationCoordinate2D(latitude: 10, longitude: 10)
let marker = GMSAdvancedMarker(position: position)
marker.map = mapView
// ...
marker.map = nil

هدف-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10);
GMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:position];
marker.map = mapView;
// ...
marker.map = nil;

قابلیت های نقشه

ویژگی mapCapabilities در GMSMapView بررسی برنامه‌ای برای ویژگی‌های خاص نقشه را اضافه می‌کند. این زمانی مفید است که بخواهیم قبل از فراخوانی API های خاص بدانیم که آیا قابلیت های نقشه خاصی در دسترس هستند یا خیر. تابع didChangeMapCapabilities GMSMapViewDelegate نیز با تغییر قابلیت ها فراخوانی می شود. این پرس و جو تعیین می کند که آیا نمای نقشه از نشانگرهای پیشرفته پشتیبانی می کند یا خیر.

سویفت

// ...

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
  }
}

هدف-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;
}