Gunakan subclass GMSAdvancedMarker untuk membuat fitur penanda dasar atau
tertentu, seperti yang ditunjukkan di bawah. Sebagai subclass dari
GMSMarker, GMSAdvancedMarker menyediakan penanda dengan lebih banyak
ekspresi.
Serupa dengan GMSMarker, Anda dapat menghapus penanda lanjutan dari peta dengan menetapkan properti peta GMSAdvancedMarker ke nil. Atau, Anda dapat menghapus semua overlay (termasuk penanda lanjutan) di peta dengan memanggil metode clearGMSMapView.
Jika Anda ingin melakukan modifikasi pada penanda setelah menambahkannya ke peta, pastikan Anda tetap mempertahankan objek GMSAdvancedMarker. Anda dapat mengubah penanda nanti dengan membuat perubahan pada objek ini.
Properti mapCapabilities di GMSMapView menambahkan pemeriksaan
terprogram untuk fitur khusus peta. Hal ini berguna jika Anda ingin mengetahui apakah
kemampuan peta tertentu tersedia sebelum memanggil API tertentu. Fungsi
didChangeMapCapabilities dari
GMSMapViewDelegate juga
dipanggil saat kemampuan berubah.
Kueri ini menentukan apakah tampilan peta mendukung penanda lanjutan.
// ..._advancedMarker=[GMSAdvancedMarkermarkerWithPosition:kSeattleCoordinates];_fallbackMarker=[GMSMarkermarkerWithPosition:kSeattleCoordinates];-(void)addMarker{if(_mapView.mapCapabilities&GMSMapCapabilityFlagsAdvancedMarkers){_advancedMarker.map=_mapView;}else{_fallbackMarker.map=_mapView;}}#pragma mark - GMSMapViewDelegate-(void)mapView:(GMSMapView*)mapViewdidChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities{BOOLadvancedMarkersAvailable=mapCapabilities&GMSMapCapabilityFlagsAdvancedMarkers;_advancedMarker.map=advancedMarkersAvailable?_mapView:nil;_fallbackMarker.map=advancedMarkersAvailable?nil:_mapView;}
[null,null,["Terakhir diperbarui pada 2025-08-31 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eGMSAdvancedMarker\u003c/code\u003e subclass in the Maps SDK for iOS allows you to create markers with enhanced features and customization options, inheriting functionalities from \u003ccode\u003eGMSMarker\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eYou can remove an advanced marker by setting its \u003ccode\u003emap\u003c/code\u003e property to \u003ccode\u003enil\u003c/code\u003e or use the \u003ccode\u003eclear\u003c/code\u003e method of \u003ccode\u003eGMSMapView\u003c/code\u003e to remove all overlays, including advanced markers.\u003c/p\u003e\n"],["\u003cp\u003eTo modify an existing marker, retain the \u003ccode\u003eGMSAdvancedMarker\u003c/code\u003e object and make changes to its properties.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emapCapabilities\u003c/code\u003e property of \u003ccode\u003eGMSMapView\u003c/code\u003e enables checking for map features programmatically, such as support for advanced markers, before using related APIs, ensuring compatibility.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003edidChangeMapCapabilities\u003c/code\u003e function of the \u003ccode\u003eGMSMapViewDelegate\u003c/code\u003e is triggered when map capabilities change, offering a way to dynamically adapt marker usage based on available features.\u003c/p\u003e\n"]]],[],null,["# Create an advanced marker\n\nSelect platform: [Android](/maps/documentation/android-sdk/advanced-markers/add-marker \"View this page for the Android platform docs.\") [iOS](/maps/documentation/ios-sdk/advanced-markers/add-marker \"View this page for the iOS platform docs.\") [JavaScript](/maps/documentation/javascript/advanced-markers/add-marker \"View this page for the JavaScript platform docs.\")\n\n\u003cbr /\u003e\n\nUse the [`GMSAdvancedMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSAdvancedMarker) subclass to create basic or\nspecific marker features, as shown below. As a subclass of\n[`GMSMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMarker), `GMSAdvancedMarker` provides markers with more\nexpression. \n\n### Swift\n\n```swift\nlet camera = GMSCameraPosition( target: coordinate, zoom: 14)\nlet mapID = GMSMapID(identifier: \"YOUR_MAP_ID\")\nlet mapView = GMSMapView(frame: view.bounds, mapID: mapID, camera: camera)\n\nlet marker = GMSAdvancedMarker(position: coordinate)\nmarker.map = mapView\n```\n\n### Objective-C\n\n```objective-c\nGMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:kCoordinate zoom:16];\nGMSMapID *mapID = [GMSMapID mapIDWithIdentifier:\"YOUR_MAP_ID\"];\n\nself.mapView = [GMSMapView mapWithFrame:self.view.bounds mapID:mapID camera:camera];\n\nGMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:kCoordinate];\nMarker.map = self.mapView;\n```\n| Note: For testing, you can skip the step of creating and configuring a [map ID](/maps/documentation/get-map-id), by using mapId: `DEMO_MAP_ID` in your app code. `DEMO_MAP_ID` is intended for testing purposes only. Don't use `DEMO_MAP_ID` in a production environment.\n\nRemove an advanced marker\n-------------------------\n\nSimilar to [`GMSMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMarker), you can remove an advanced marker from the\nmap by setting the map property of the [`GMSAdvancedMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSAdvancedMarker)\nto `nil`. Alternatively, you can remove all of the overlays (including advanced\nmarkers) on the map by calling the [`GMSMapView`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMapView) `clear` method.\n\n\n### Swift\n\n```swift\nlet camera = GMSCameraPosition.camera(\n withLatitude: -33.8683,\n longitude: 151.2086,\n zoom: 6\n)\nlet mapView = GMSMapView.map(withFrame: .zero, camera: camera)\n// ...\nmapView.clear()\n \n```\n\n### Objective-C\n\n```objective-c\nGMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683\n longitude:151.2086\n zoom:6];\nmapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];\n// ...\n[mapView clear];\n \n```\n\n\u003cbr /\u003e\n\nIf you want to make modifications to a marker after you've added it to the map,\nensure that you keep hold of the [`GMSAdvancedMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSAdvancedMarker)\nobject. You can modify the marker later by making changes to this object. \n\n### Swift\n\n```swift\nlet position = CLLocationCoordinate2D(latitude: 10, longitude: 10)\nlet marker = GMSAdvancedMarker(position: position)\nmarker.map = mapView\n// ...\nmarker.map = nil\n```\n\n### Objective-C\n\n```objective-c\nCLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10);\nGMSAdvancedMarker *marker = [GMSAdvancedMarker markerWithPosition:position];\nmarker.map = mapView;\n// ...\nmarker.map = nil;\n```\n\nMap capabilities\n----------------\n\nThe `mapCapabilities` property on [`GMSMapView`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMapView) adds programmatic\nchecking for map-specific features. This is useful when wanting to know if\ncertain map capabilities are available before calling specific APIs. The\n`didChangeMapCapabilities` function of\n[`GMSMapViewDelegate`](/maps/documentation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate) is also\n[invoked](/maps/documentation/ios-sdk/marker-gestures) as capabilities change.\nThis query determines if the map view supports advanced markers. \n\n### Swift\n\n```swift\n// ...\n\nlet advancedMarker: GMSAdvancedMarker = {\nGMSAdvancedMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462))\n}()\n\nlet marker: GMSMarker = {\nGMSMarker(position: CLLocationCoordinate2D(latitude: 47.6089945, longitude: -122.3410462))\n}()\n\nfunc addMarker() {\n if mapView.mapCapabilities.contains(.advancedMarkers) {\n advancedMarker.map = mapView\n } else {\n marker.map = mapView\n }\n}\n\nextension MapCapabilities: GMSMapViewDelegate {\n func mapView(_ mapView: GMSMapView, didChangeMapCapabilities mapCapabilities: GMSMapCapabilityFlags) {\n\n let advancedMarkerAvailable = mapCapabilities.contains(.advancedMarkers)\n\n advancedMarker.map = advancedMarkerAvailable ? mapView : nil\n marker.map = advancedMarkerAvailable ? nil : mapView\n }\n}\n```\n\n### Objective-C\n\n```objective-c\n// ...\n\n_advancedMarker = [GMSAdvancedMarker markerWithPosition: kSeattleCoordinates];\n_fallbackMarker = [GMSMarker markerWithPosition: kSeattleCoordinates];\n\n- (void)addMarker {\n\n if (_mapView.mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers) {\n _advancedMarker.map = _mapView;\n } else {\n _fallbackMarker.map = _mapView;\n }\n}\n\n#pragma mark - GMSMapViewDelegate\n\n- (void)mapView:(GMSMapView *)mapView\n didChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities {\n BOOL advancedMarkersAvailable = mapCapabilities & GMSMapCapabilityFlagsAdvancedMarkers;\n _advancedMarker.map = advancedMarkersAvailable ? _mapView : nil;\n _fallbackMarker.map = advancedMarkersAvailable ? nil : _mapView;\n}\n```"]]