GoogleMap.addMarker() trả về một thực thể của Marker.
Nếu cần, bạn có thể truyền giá trị trả về đến AdvancedMarker.
Dùng AdvancedMarkerOptions để định cấu hình các điểm đánh dấu nâng cao.
AdvancedMarkerOptions là một lớp con của MarkerOptions nên lớp này hỗ trợ tất cả các chế độ cài đặt giống như MarkerOptions.
AdvancedMarkerOptions cũng cho phép bạn:
Tạo một thực thể của lớp PinConfig, sau đó dùng thực thể PinConfig để định cấu hình thực thể AdvancedMarkerOptions.
Sử dụng PinConfig để tuỳ chỉnh các thuộc tính nâng cao của điểm đánh dấu, chẳng hạn như màu nền, màu viền và glyph.
Tạo một thực thể của lớp View Android và dùng thực thể đó để định cấu hình thực thể AdvancedMarkerOptions.
Đối tượng View cho phép bạn tuỳ chỉnh hoàn toàn điểm đánh dấu.
Sử dụng PinConfig
Lớp PinConfig chứa các lựa chọn để tuỳ chỉnh điểm đánh dấu nâng cao. Sử dụng PinConfig để:
// Use PinConfig.Builder to create an instance of PinConfig.valpinConfigBuilder:PinConfig.Builder=PinConfig.builder()pinConfigBuilder.setBackgroundColor(Color.MAGENTA)valpinConfig:PinConfig=pinConfigBuilder.build()
// Use the PinConfig instance to set the icon for AdvancedMarkerOptions.valadvancedMarkerOptions:AdvancedMarkerOptions=AdvancedMarkerOptions().icon(BitmapDescriptorFactory.fromPinConfig(pinConfig)).position(MARKER_POSITION)
// Pass the AdvancedMarkerOptions instance to addMarker().valmarker:Marker? =map.addMarker(advancedMarkerOptions)
Java
// Use PinConfig.Builder to create an instance of PinConfig.PinConfig.BuilderpinConfigBuilder=PinConfig.builder();pinConfigBuilder.setBackgroundColor(Color.MAGENTA);PinConfigpinConfig=pinConfigBuilder.build(); // Use the PinConfig instance to set the icon for AdvancedMarkerOptions.AdvancedMarkerOptionsadvancedMarkerOptions=newAdvancedMarkerOptions().icon(BitmapDescriptorFactory.fromPinConfig(pinConfig)).position(MARKER_POSITION); // Pass the AdvancedMarkerOptions instance to addMarker().Markermarker=map.addMarker(advancedMarkerOptions);
Thay đổi màu nền
Sử dụng phương thức PinConfig.background() để thay đổi màu nền của một điểm đánh dấu:
Kotlin
// Use PinConfig.Builder to create an instance of PinConfig.valpinConfigBuilder:PinConfig.Builder=PinConfig.builder()pinConfigBuilder.setBackgroundColor(Color.MAGENTA)valpinConfig:PinConfig=pinConfigBuilder.build()
Java
// Use PinConfig.Builder to create an instance of PinConfig.PinConfig.BuilderpinConfigBuilder=PinConfig.builder();pinConfigBuilder.setBackgroundColor(Color.MAGENTA);PinConfigpinConfig=pinConfigBuilder.build();
Thay đổi màu đường viền
Dùng phương thức PinConfig.borderColor() để thay đổi màu đường viền của một điểm đánh dấu:
Kotlin
// Set the border color.valpinConfigBuilder:PinConfig.Builder=PinConfig.builder()pinConfigBuilder.setBorderColor(Color.BLUE)valpinConfig:PinConfig=pinConfigBuilder.build()
Java
// Set the border color.PinConfig.BuilderpinConfigBuilder=PinConfig.builder();pinConfigBuilder.setBorderColor(Color.BLUE);PinConfigpinConfig=pinConfigBuilder.build();
Thay đổi glyph
Tạo một thực thể Glyph rồi dùng thực thể đó để định cấu hình PinConfig.
Sử dụng biểu tượng để đặt văn bản và màu văn bản của biểu tượng, màu biểu tượng hoặc chỉ định một hình ảnh tuỳ chỉnh để dùng làm biểu tượng.
Ví dụ sau đây đặt văn bản glyph:
Kotlin
// Set the glyph text.valpinConfigBuilder:PinConfig.Builder=PinConfig.builder()valglyphText=Glyph("A") // Alteratively, you can set the text color:// Glyph glyphText = new Glyph("A", Color.GREEN); pinConfigBuilder.setGlyph(glyphText)valpinConfig:PinConfig=pinConfigBuilder.build()
Java
// Set the glyph text.PinConfig.BuilderpinConfigBuilder=PinConfig.builder();PinConfig.GlyphglyphText=newPinConfig.Glyph("A"); // Alternatively, you can set the text color:// PinConfig.Glyph glyphText = new PinConfig.Glyph("A", Color.GREEN); pinConfigBuilder.setGlyph(glyphText);PinConfigpinConfig=pinConfigBuilder.build();
Đặt hình ảnh tuỳ chỉnh cho biểu tượng. Kỹ thuật này sẽ hữu ích nếu bạn muốn sử dụng một biểu trưng tuỳ chỉnh hoặc chỉ báo trực quan khác trong điểm đánh dấu.
Kotlin
// Set the glyph image.valglyphImage:Int=R.drawable.example_imagevaldescriptor=PinConfig.BitmapDescriptorFactory.fromResource(glyphImage)pinConfigBuilder.setGlyph(Glyph(descriptor))valpinConfig:PinConfig=pinConfigBuilder.build()
Java
// Set the glyph image.intglyphImage=R.drawable.example_image;BitmapDescriptordescriptor=BitmapDescriptorFactory.fromResource(glyphImage);pinConfigBuilder.setGlyph(newPinConfig.Glyph(descriptor));PinConfigpinConfig=pinConfigBuilder.build();
Ẩn glyph
Bạn có thể ẩn glyph để màu nền lấp đầy toàn bộ điểm đánh dấu:
Kotlin
// Create a transparent glyph.valpinConfigBuilder:PinConfig.Builder=PinConfig.builder()pinConfigBuilder.setBackgroundColor(Color.MAGENTA)pinConfigBuilder.setGlyph(PinConfig.Glyph(Color.TRANSPARENT))valpinConfig:PinConfig=pinConfigBuilder.build()
Java
// Create a transparent glyph.PinConfig.BuilderpinConfigBuilder=PinConfig.builder();pinConfigBuilder.setBackgroundColor(Color.MAGENTA);pinConfigBuilder.setGlyph(newPinConfig.Glyph(Color.TRANSPARENT));PinConfigpinConfig=pinConfigBuilder.build();
Sử dụng iconView
Phương thức AdvancedMarkerOptions.iconView() cho phép bạn sử dụng bất kỳ View nào của Android làm điểm đánh dấu. Bằng cách sử dụng một khung hiển thị làm điểm đánh dấu, bạn có toàn quyền kiểm soát điểm đánh dấu.
Trong ứng dụng, trước tiên, bạn tạo khung hiển thị, sau đó sử dụng phương thức AdvancedMarkerOptions.iconView() để thêm khung hiển thị vào các điểm đánh dấu nâng cao.
Kotlin
// Create a TextView to use as the marker.valtextView=TextView(this)textView.text="Hello!!"textView.setBackgroundColor(Color.BLACK)textView.setTextColor(Color.YELLOW) valmarker:Marker? =map.addMarker(AdvancedMarkerOptions().position(SYDNEY).iconView(textView))
Java
// Create a TextView to use as the marker.TextViewtextView=newTextView(this);textView.setText("Hello!!");textView.setBackgroundColor(Color.BLACK);textView.setTextColor(Color.YELLOW); Markermarker=map.addMarker(newAdvancedMarkerOptions().position(SYDNEY).iconView(textView));
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-09-05 UTC."],[[["\u003cp\u003eAdvanced markers can be added to a map by creating an \u003ccode\u003eAdvancedMarkerOptions\u003c/code\u003e instance and using \u003ccode\u003eGoogleMap.addMarker()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eCustomize advanced marker properties, such as background color, border color, and glyph, by creating and configuring a \u003ccode\u003ePinConfig\u003c/code\u003e instance.\u003c/p\u003e\n"],["\u003cp\u003eUse the \u003ccode\u003eAdvancedMarkerOptions.iconView()\u003c/code\u003e method to utilize any Android View as the marker, offering complete customization control but potentially impacting performance.\u003c/p\u003e\n"],["\u003cp\u003eWhen using a \u003ccode\u003eView\u003c/code\u003e as a marker, manipulate the \u003ccode\u003eMarker\u003c/code\u003e itself for operations like rotation instead of directly modifying the \u003ccode\u003eView\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFurther customization options include changing the background and border colors, setting the glyph, and hiding the glyph for a filled background.\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\nTo add advanced markers to a map, create a new instance of\n[`AdvancedMarkerOptions`](/android/reference/com/google/android/gms/maps/model/AdvancedMarkerOptions)\nand then use\n[`GoogleMap.addMarker()`](/android/reference/com/google/android/gms/maps/GoogleMap#addMarker(com.google.android.gms.maps.model.MarkerOptions))\nto add the marker: \n\n### Kotlin\n\n\n```kotlin\nprivate val SYDNEY = LatLng(-33.87365, 151.20689)\n\nval marker: Marker? = map.addMarker(\n AdvancedMarkerOptions()\n .position(SYDNEY)\n .iconView(textView)\n .zIndex(zIndex)\n)\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\nprivate final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);\n\nMarker marker = map.addMarker(\n new AdvancedMarkerOptions()\n .position(SYDNEY)\n .iconView(textView)\n .zIndex(zIndex));\n```\n\n\u003cbr /\u003e\n\n`GoogleMap.addMarker()` returns an instance of\n[`Marker`](/android/reference/com/google/android/gms/maps/model/Marker).\nIf necessary, you can cast the returned value to\n[`AdvancedMarker`](/android/reference/com/google/android/gms/maps/model/AdvancedMarker).\n\nUse `AdvancedMarkerOptions` to configure advanced markers.\n`AdvancedMarkerOptions` is a subclass of\n[`MarkerOptions`](/android/reference/com/google/android/gms/maps/model/MarkerOptions)\nso it supports all the same settings as `MarkerOptions`.\n\n`AdvancedMarkerOptions` also lets you:\n\n- Create an instance of the\n [`PinConfig`](/android/reference/com/google/android/gms/maps/model/PinConfig)\n class, and then use the `PinConfig`\n instance to configure the `AdvancedMarkerOptions` instance.\n\n Use `PinConfig` to customize advanced marker properties, such as the\n background color, border color, and glyph.\n- Create an instance of the Android\n [`View`](https://developer.android.com/reference/android/view/View) class\n and use that instance to configure the `AdvancedMarkerOptions` instance.\n\n The View instance lets you fully customize the marker.\n\nUse PinConfig\n-------------\n\nThe `PinConfig` class contains options to customize\nadvanced markers. Use `PinConfig` to:\n\n- Change the background color\n- Change the border color\n- Change the glyph color or add text\n- Hide the glyph\n\n**Figure 1**: The parts of an Advanced Marker.\n\nUse [`PinConfig.Builder`](/android/reference/com/google/android/gms/maps/model/PinConfig.Builder)\nto create an instance of `PinConfig`: \n\n### Kotlin\n\n\n```kotlin\n// Use PinConfig.Builder to create an instance of PinConfig.\nval pinConfigBuilder: PinConfig.Builder = PinConfig.builder()\npinConfigBuilder.setBackgroundColor(Color.MAGENTA)\nval pinConfig: PinConfig = pinConfigBuilder.build()\n\n// Use the PinConfig instance to set the icon for AdvancedMarkerOptions.\nval advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()\n .icon(BitmapDescriptorFactory.fromPinConfig(pinConfig))\n .position(MARKER_POSITION)\n\n// Pass the AdvancedMarkerOptions instance to addMarker().\nval marker: Marker? = map.addMarker(advancedMarkerOptions)\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Use PinConfig.Builder to create an instance of PinConfig.\nPinConfig.Builder pinConfigBuilder = PinConfig.builder();\npinConfigBuilder.setBackgroundColor(Color.MAGENTA);\nPinConfig pinConfig = pinConfigBuilder.build();\n\n// Use the PinConfig instance to set the icon for AdvancedMarkerOptions.\nAdvancedMarkerOptions advancedMarkerOptions =\n new AdvancedMarkerOptions()\n .icon(BitmapDescriptorFactory.fromPinConfig(pinConfig))\n .position(MARKER_POSITION);\n\n// Pass the AdvancedMarkerOptions instance to addMarker().\nMarker marker = map.addMarker(advancedMarkerOptions);\n```\n\n\u003cbr /\u003e\n\n### Change the background color\n\nUse the `PinConfig.background()` method to change the background color of a\nmarker: \n\n### Kotlin\n\n\n```kotlin\n// Use PinConfig.Builder to create an instance of PinConfig.\nval pinConfigBuilder: PinConfig.Builder = PinConfig.builder()\npinConfigBuilder.setBackgroundColor(Color.MAGENTA)\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Use PinConfig.Builder to create an instance of PinConfig.\nPinConfig.Builder pinConfigBuilder = PinConfig.builder();\npinConfigBuilder.setBackgroundColor(Color.MAGENTA);\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\n### Change the border color\n\nUse the `PinConfig.borderColor()` method to change the border color of a\nmarker: \n\n### Kotlin\n\n\n```kotlin\n// Set the border color.\nval pinConfigBuilder: PinConfig.Builder = PinConfig.builder()\npinConfigBuilder.setBorderColor(Color.BLUE)\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Set the border color.\nPinConfig.Builder pinConfigBuilder = PinConfig.builder();\npinConfigBuilder.setBorderColor(Color.BLUE);\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\n### Change the glyph\n\nCreate a [`Glyph`](/android/reference/com/google/android/gms/maps/model/PinConfig.Glyph)\ninstance and then use that instance to configure `PinConfig`.\nUse the glyph to set the glyph text and text color, the glyph color, or to\nspecify a custom image to use as the glyph.\n\nThe following example sets the glyph text: \n\n### Kotlin\n\n\n```kotlin\n// Set the glyph text.\nval pinConfigBuilder: PinConfig.Builder = PinConfig.builder()\nval glyphText = Glyph(\"A\")\n\n// Alteratively, you can set the text color:\n// Glyph glyphText = new Glyph(\"A\", Color.GREEN);\n\npinConfigBuilder.setGlyph(glyphText)\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Set the glyph text.\nPinConfig.Builder pinConfigBuilder = PinConfig.builder();\nPinConfig.Glyph glyphText = new PinConfig.Glyph(\"A\");\n\n// Alternatively, you can set the text color:\n// PinConfig.Glyph glyphText = new PinConfig.Glyph(\"A\", Color.GREEN);\n\npinConfigBuilder.setGlyph(glyphText);\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\nSet the glyph color: \n\n### Kotlin\n\n\n```kotlin\nval glyphColor = PinConfig.Glyph(Color.BLUE)\npinConfigBuilder.setGlyph(glyphColor)\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\nPinConfig.Glyph glyphColor = new PinConfig.Glyph(Color.BLUE);\npinConfigBuilder.setGlyph(glyphColor);\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\nSet a custom image for the glyph. This technique is useful if you want to use a\ncustom logo or other visual indicator in the marker. \n\n### Kotlin\n\n\n```kotlin\n// Set the glyph image.\nval glyphImage: Int = R.drawable.example_image\nval descriptor = PinConfig.BitmapDescriptorFactory.fromResource(glyphImage)\npinConfigBuilder.setGlyph(Glyph(descriptor))\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Set the glyph image.\nint glyphImage = R.drawable.example_image;\nBitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(glyphImage);\npinConfigBuilder.setGlyph(new PinConfig.Glyph(descriptor));\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\n### Hide the glyph\n\nYou can hide the glyph so that the background color fills the entire marker: \n\n### Kotlin\n\n\n```kotlin\n// Create a transparent glyph.\nval pinConfigBuilder: PinConfig.Builder = PinConfig.builder()\npinConfigBuilder.setBackgroundColor(Color.MAGENTA)\npinConfigBuilder.setGlyph(PinConfig.Glyph(Color.TRANSPARENT))\nval pinConfig: PinConfig = pinConfigBuilder.build()\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Create a transparent glyph.\nPinConfig.Builder pinConfigBuilder = PinConfig.builder();\npinConfigBuilder.setBackgroundColor(Color.MAGENTA);\npinConfigBuilder.setGlyph(new PinConfig.Glyph(Color.TRANSPARENT));\nPinConfig pinConfig = pinConfigBuilder.build();\n```\n\n\u003cbr /\u003e\n\nUse iconView\n------------\n\nThe `AdvancedMarkerOptions.iconView()` method lets you use any Android\n[`View`](https://developer.android.com/reference/android/view/View)\nas the marker. By using a view as the marker, you have complete control over the\nmarker.\n| **Note:** When using a `View` as the marker, don't perform operation on the `View` to move it. Instead, modify the `Marker` itself. For example, to rotate the `View`, use the [`Marker.setRotation()`](/android/reference/com/google/android/gms/maps/model/Marker#setRotation(float)) method. Don't rotate `View`.\n\nIn your app, you first create the view, then use the\n`AdvancedMarkerOptions.iconView()` method to add the view to the\nadvanced markers. \n\n### Kotlin\n\n\n```kotlin\n// Create a TextView to use as the marker.\nval textView = TextView(this)\ntextView.text = \"Hello!!\"\ntextView.setBackgroundColor(Color.BLACK)\ntextView.setTextColor(Color.YELLOW)\n\nval marker: Marker? = map.addMarker(\n AdvancedMarkerOptions()\n .position(SYDNEY)\n .iconView(textView)\n)\n```\n\n\u003cbr /\u003e\n\n### Java\n\n\n```java\n// Create a TextView to use as the marker.\nTextView textView = new TextView(this);\ntextView.setText(\"Hello!!\");\ntextView.setBackgroundColor(Color.BLACK);\ntextView.setTextColor(Color.YELLOW);\n\nMarker marker = map.addMarker(\n new AdvancedMarkerOptions()\n .position(SYDNEY)\n .iconView(textView));\n```\n\n\u003cbr /\u003e\n\n| **Caution:** Performance of a map view with `iconView` markers might not match the performance of bitmap or default markers.\n\nNext steps:\n-----------\n\n- [Collision behavior](/maps/documentation/android-sdk/advanced-markers/collision-behavior)"]]