همانطور که در زیر نشان داده شده است از زیر کلاس 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; }