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

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

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

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

آبجکتیو-سی

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;

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

مشابه GMSMarker، می‌توانید با تنظیم ویژگی نقشه GMSAdvancedMarker روی nil، نشانگر پیشرفته را از نقشه بردارید. همچنین می‌توانید با فراخوانی روش 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()
      

آبجکتیو-سی

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];
      

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

Swift

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

آبجکتیو-سی

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

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

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

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

آبجکتیو-سی

// ...

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