ใช้คลาสย่อย GMSAdvancedMarker เพื่อสร้างฟีเจอร์ตัวทำเครื่องหมายพื้นฐานหรือ
เฉพาะเจาะจง ดังที่แสดงด้านล่าง As a subclass of
GMSMarker, GMSAdvancedMarker provides markers with more
expression.
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;
นำเครื่องหมายขั้นสูงออก
คุณสามารถนำเครื่องหมายขั้นสูงออกจาก
แผนที่ได้โดยตั้งค่าพร็อพเพอร์ตี้ map ของ GMSAdvancedMarker
เป็น nil ซึ่งคล้ายกับ GMSMarker หรือจะนำภาพซ้อนทับทั้งหมด (รวมถึงเครื่องหมายขั้นสูง
ออก) จากแผนที่โดยเรียกใช้เมธอด 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];
หากต้องการแก้ไขเครื่องหมายหลังจากเพิ่มลงในแผนที่แล้ว
ให้เก็บออบเจ็กต์ GMSAdvancedMarker
ไว้ คุณสามารถแก้ไขเครื่องหมายได้ในภายหลังโดยทำการเปลี่ยนแปลงออบเจ็กต์นี้
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;
ความสามารถของแผนที่
พร็อพเพอร์ตี้ mapCapabilities ใน GMSMapView จะเพิ่มการตรวจสอบความสามารถเฉพาะของแผนที่โดยใช้โปรแกรม
ซึ่งมีประโยชน์เมื่อต้องการทราบว่าความสามารถบางอย่างของแผนที่พร้อมใช้งานหรือไม่ก่อนที่จะเรียกใช้ API ที่เฉพาะเจาะจง นอกจากนี้ ฟังก์ชัน
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 } }
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; }