
เครื่องหมายระบุตำแหน่งบนแผนที่ เครื่องหมายเริ่มต้นใช้ไอคอนมาตรฐานที่พบได้ทั่วไปใน Google Maps คุณสามารถเปลี่ยนสี รูปภาพ หรือจุดยึดของไอคอนผ่าน API ได้ เครื่องหมายเป็นออบเจ็กต์ประเภท
Marker และจะเพิ่มลงในแผนที่ด้วยเมธอด
GoogleMap.addMarker(markerOptions)
เครื่องหมายออกแบบมาให้เป็นแบบอินเทอร์แอกทีฟ โดยจะรับเหตุการณ์ click โดย
ค่าเริ่มต้น และมักใช้ร่วมกับ Listener เหตุการณ์เพื่อแสดง หน้าต่างข้อมูล การตั้งค่าพร็อพเพอร์ตี้ draggable ของเครื่องหมายเป็น true จะอนุญาตให้ผู้ใช้เปลี่ยนตำแหน่งของเครื่องหมายได้ ใช้การกดค้างเพื่อเปิดใช้งานความสามารถในการย้ายเครื่องหมาย
โดยค่าเริ่มต้น เมื่อผู้ใช้แตะเครื่องหมาย แถบเครื่องมือแผนที่จะปรากฏที่ด้านขวาล่างของแผนที่ ซึ่งช่วยให้ผู้ใช้เข้าถึงแอป Google Maps บนมือถือได้อย่างรวดเร็ว คุณสามารถปิดใช้แถบเครื่องมือได้ ดูข้อมูลเพิ่มเติมได้ที่ คู่มือการควบคุม
เพิ่มเครื่องหมาย
ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มเครื่องหมายลงในแผนที่ เครื่องหมายจะสร้างขึ้นที่พิกัด -33.852,151.211 (ซิดนีย์ ออสเตรเลีย) และแสดงสตริง "Marker in Sydney" ในหน้าต่างข้อมูลเมื่อคลิก
Kotlin
// Add a marker in Sydney, Australia, // and move the map's camera to the same location. val sydney = LatLng(-33.852, 151.211) val marker = map.addMarker( MarkerOptions() .position(sydney) .title("Marker in Sydney") ) marker?.let { val position = it.position val title = it.title val snippet = it.snippet val isDraggable = it.isDraggable val isFlat = it.isFlat val isVisible = it.isVisible val alpha = it.alpha val rotation = it.rotation val zIndex = it.zIndex } map.moveCamera(CameraUpdateFactory.newLatLng(sydney))
Java
// Add a marker in Sydney, Australia, // and move the map's camera to the same location. LatLng sydney = new LatLng(-33.852, 151.211); Marker marker = map.addMarker(new MarkerOptions() .position(sydney) .title("Marker in Sydney")); map.moveCamera(CameraUpdateFactory.newLatLng(sydney));
แสดงข้อมูลเพิ่มเติมเกี่ยวกับเครื่องหมาย
ข้อกำหนดทั่วไปคือการแสดงข้อมูลเพิ่มเติมเกี่ยวกับสถานที่เมื่อผู้ใช้แตะเครื่องหมายบนแผนที่ ดูคู่มือหน้าต่างข้อมูล
เชื่อมโยงข้อมูลกับเครื่องหมาย
คุณสามารถจัดเก็บออบเจ็กต์ข้อมูลที่กำหนดเองกับเครื่องหมายได้โดยใช้ Marker.setTag() และดึงข้อมูลออบเจ็กต์โดยใช้ Marker.getTag() ตัวอย่างด้านล่างแสดงวิธีนับจำนวนครั้งที่คลิกเครื่องหมายโดยใช้แท็ก
Kotlin
val PERTH = LatLng(-31.952854, 115.857342) val SYDNEY = LatLng(-33.87365, 151.20689) val BRISBANE = LatLng(-27.47093, 153.0235) val markerPerth = map.addMarker( MarkerOptions() .position(PERTH) .title("Perth") ) markerPerth?.tag = 0 val markerSydney = map.addMarker( MarkerOptions() .position(SYDNEY) .title("Sydney") ) markerSydney?.tag = 0 val markerBrisbane = map.addMarker( MarkerOptions() .position(BRISBANE) .title("Brisbane") ) markerBrisbane?.tag = 0 // Set a listener for marker click. map.setOnMarkerClickListener { marker -> // Retrieve the data from the marker. val clickCount = marker.tag as? Int // Check if a click count was set, then display the click count. clickCount?.let { val newClickCount = it + 1 marker.tag = newClickCount Toast.makeText( context, "${marker.title} has been clicked $newClickCount times.", Toast.LENGTH_SHORT ).show() } // Return false to indicate default behavior. false }
Java
final LatLng PERTH = new LatLng(-31.952854, 115.857342); final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); final LatLng BRISBANE = new LatLng(-27.47093, 153.0235); Marker markerPerth = map.addMarker(new MarkerOptions() .position(PERTH) .title("Perth")); markerPerth.setTag(0); Marker markerSydney = map.addMarker(new MarkerOptions() .position(SYDNEY) .title("Sydney")); markerSydney.setTag(0); Marker markerBrisbane = map.addMarker(new MarkerOptions() .position(BRISBANE) .title("Brisbane")); markerBrisbane.setTag(0); // Set a listener for marker click. map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(final Marker marker) { // Retrieve the data from the marker. Integer clickCount = (Integer) marker.getTag(); // Check if a click count was set, then display the click count. if (clickCount != null) { clickCount = clickCount + 1; marker.setTag(clickCount); Toast.makeText(context, marker.getTitle() + " has been clicked " + clickCount + " times.", Toast.LENGTH_SHORT).show(); } // Return false to indicate default behavior should occur. return false; } });
ต่อไปนี้คือตัวอย่างสถานการณ์ที่การจัดเก็บและดึงข้อมูลด้วยเครื่องหมายมีประโยชน์
- แอปของคุณอาจรองรับเครื่องหมายประเภทต่างๆ และคุณต้องการจัดการเครื่องหมายเหล่านั้นแตกต่างกันเมื่อผู้ใช้คลิก หากต้องการทำเช่นนี้ คุณสามารถจัดเก็บ
Stringกับเครื่องหมายเพื่อระบุประเภทได้ - คุณอาจเชื่อมต่อกับระบบที่มีตัวระบุบันทึกที่ไม่ซ้ำกัน ซึ่งเครื่องหมายจะแสดงบันทึกที่เฉพาะเจาะจงในระบบนั้น
- ข้อมูลเครื่องหมายอาจระบุลำดับความสำคัญที่จะใช้เมื่อตัดสินใจเกี่ยวกับดัชนีลำดับ Z ของเครื่องหมาย
ทำให้เครื่องหมายลากได้
คุณสามารถเปลี่ยนตำแหน่งเครื่องหมายได้เมื่อเพิ่มลงในแผนที่แล้ว ตราบใดที่พร็อพเพอร์ตี้ draggable ตั้งค่าเป็น true กดเครื่องหมายค้างไว้เพื่อเปิดใช้การลาก เมื่อคุณปล่อยนิ้วออกจากหน้าจอ เครื่องหมายจะยังคงอยู่ในตำแหน่งนั้น
เครื่องหมายจะลากไม่ได้โดยค่าเริ่มต้น คุณต้องตั้งค่าเครื่องหมายให้ลากได้โดยชัดแจ้งด้วย MarkerOptions.draggable(boolean) ก่อนเพิ่มลงในแผนที่ หรือ Marker.setDraggable(boolean) เมื่อเพิ่มลงในแผนที่แล้ว
คุณสามารถฟังเหตุการณ์การลากบนเครื่องหมายได้ตามที่อธิบายไว้ในเหตุการณ์การลาก
เครื่องหมาย
ข้อมูลโค้ดด้านล่างจะเพิ่มเครื่องหมายที่ลากได้ที่เพิร์ท ออสเตรเลีย
Kotlin
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .draggable(true) ) map.moveCamera(com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(perthLocation, 10f))
Java
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .draggable(true)); map.moveCamera(com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(perthLocation, 10f));
ปรับแต่งเครื่องหมาย
วิดีโอนี้แสดงวิธีใช้เครื่องหมายเพื่อแสดงตำแหน่งบนแผนที่
เครื่องหมายอาจกำหนดรูปภาพที่กำหนดเองเพื่อแสดงแทนไอคอนเริ่มต้น การกำหนดไอคอนเกี่ยวข้องกับการตั้งค่าพร็อพเพอร์ตี้จำนวนหนึ่งซึ่งส่งผลต่อลักษณะการทำงานด้านภาพของเครื่องหมาย
เครื่องหมายรองรับการปรับแต่งผ่านพร็อพเพอร์ตี้ต่อไปนี้
- ตำแหน่ง (ต้องระบุ)
- ค่า
LatLngสำหรับตำแหน่งของเครื่องหมายบนแผนที่ นี่เป็นพร็อพเพอร์ตี้เดียวที่ต้องระบุสำหรับออบเจ็กต์Marker - จุดยึด
- จุดบนรูปภาพที่จะวางไว้ที่ตำแหน่ง LatLng ของ เครื่องหมาย โดยค่าเริ่มต้นจะเป็นกึ่งกลางด้านล่างของรูปภาพ
- อัลฟ่า
- ตั้งค่าความทึบแสงของเครื่องหมาย ค่าเริ่มต้นคือ 1.0
- ชื่อ
- สตริงที่จะแสดงในหน้าต่างข้อมูลเมื่อผู้ใช้แตะ เครื่องหมาย
- ตัวอย่างข้อมูล
- ข้อความเพิ่มเติมที่จะแสดงใต้ชื่อ
- ไอคอน
- บิตแมปที่จะแสดงแทนรูปภาพเครื่องหมายเริ่มต้น
- ลากได้
- ตั้งค่าเป็น
trueหากต้องการอนุญาตให้ผู้ใช้ย้าย เครื่องหมาย ค่าเริ่มต้นคือfalse - แสดง
- ตั้งค่าเป็น
falseเพื่อทำให้เครื่องหมายไม่แสดง ค่าเริ่มต้นคือtrue. - การวางแนวแบบแบนหรือแบบป้ายโฆษณา
- โดยค่าเริ่มต้น เครื่องหมายจะใช้การวางแนวแบบป้ายโฆษณา ซึ่งหมายความว่าจะวาด โดยวางแนวกับหน้าจอของอุปกรณ์แทนที่จะวางแนวกับพื้นผิวของแผนที่ การหมุน การเอียง หรือการซูมแผนที่จะไม่เปลี่ยนการวางแนวของ เครื่องหมาย คุณสามารถตั้งค่าการวางแนวของเครื่องหมายให้แบนราบกับโลกได้ เครื่องหมายแบบแบนจะหมุนเมื่อแผนที่หมุน และเปลี่ยนมุมมองเมื่อแผนที่เอียง เครื่องหมายแบบแบนจะคงขนาดไว้เมื่อ ซูมเข้าหรือออกแผนที่ เช่นเดียวกับเครื่องหมายแบบป้ายโฆษณา
- การหมุน
- การวางแนวของเครื่องหมายที่ระบุเป็นองศาตามเข็มนาฬิกา ตำแหน่งเริ่มต้น จะเปลี่ยนไปหากเครื่องหมายแบน ตำแหน่งเริ่มต้นสำหรับเครื่องหมายแบบแบน คือการจัดแนวไปทางทิศเหนือ เมื่อเครื่องหมายไม่แบน ตำแหน่งเริ่มต้น ตำแหน่งจะชี้ขึ้น และการหมุนจะเป็นไปในลักษณะที่เครื่องหมายหันหน้าเข้าหากล้องเสมอ
ข้อมูลโค้ดด้านล่างจะสร้างเครื่องหมายแบบง่ายด้วยไอคอนเริ่มต้น
Kotlin
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) )
Java
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation));
ปรับแต่งสีเครื่องหมาย
คุณสามารถปรับแต่งสีของรูปภาพเครื่องหมายเริ่มต้นได้โดยส่งออบเจ็กต์ BitmapDescriptor ไปยังเมธอด icon() คุณสามารถใช้ชุดสีที่
กำหนดไว้ล่วงหน้าในBitmapDescriptorFactory
ออบเจ็กต์ หรือตั้งค่าสีเครื่องหมายที่กำหนดเองด้วย
BitmapDescriptorFactory.defaultMarker(float hue)เมธอด เฉดสีเป็นค่าระหว่าง 0 ถึง 360 ซึ่งแสดงจุดบนวงล้อสี
Kotlin
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)) )
Java
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
ปรับแต่งความทึบแสงของเครื่องหมาย
คุณสามารถควบคุมความทึบแสงของเครื่องหมายได้ด้วยเมธอด MarkerOptions.alpha() โดยควรระบุอัลฟ่าเป็นค่า Float ระหว่าง 0.0 ถึง 1.0 ซึ่ง 0 หมายถึงโปร่งใสทั้งหมด และ 1 หมายถึงทึบแสงทั้งหมด
Kotlin
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .alpha(0.7f) )
Java
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker(new MarkerOptions() .position(melbourneLocation) .alpha(0.7f));
ปรับแต่งรูปภาพเครื่องหมาย
คุณสามารถแทนที่รูปภาพเครื่องหมายเริ่มต้นด้วยรูปภาพเครื่องหมายที่กำหนดเอง ซึ่งมักเรียกว่าไอคอน ไอคอนที่กำหนดเองจะตั้งค่าเป็น BitmapDescriptor เสมอ และ
กำหนดโดยใช้เมธอดใดเมธอดหนึ่งใน
BitmapDescriptorFactory คลาส
fromAsset(String assetName)- สร้างเครื่องหมายที่กำหนดเองโดยใช้ชื่อรูปภาพบิตแมปในไดเรกทอรีชิ้นงาน
fromBitmap(Bitmap image)- สร้างเครื่องหมายที่กำหนดเองจากรูปภาพบิตแมป
fromFile(String fileName)- สร้างไอคอนที่กำหนดเองโดยใช้ชื่อไฟล์รูปภาพบิตแมปที่อยู่ใน พื้นที่เก็บข้อมูลภายใน
fromPath(String absolutePath)- สร้างเครื่องหมายที่กำหนดเองจากเส้นทางไฟล์แบบสัมบูรณ์ของรูปภาพบิตแมป
fromResource(int resourceId)- สร้างเครื่องหมายที่กำหนดเองโดยใช้รหัสทรัพยากรของรูปภาพบิตแมป
ข้อมูลโค้ดด้านล่างจะสร้างเครื่องหมายที่มีไอคอนที่กำหนดเอง
Kotlin
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)) )
Java
final LatLng melbourneLocation = new LatLng(-37.813, 144.962); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLocation) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
ทำให้เครื่องหมายแบน
โดยปกติแล้ว ไอคอนเครื่องหมายจะวาดโดยอิงตามหน้าจอ การหมุน การเอียง หรือการซูมแผนที่จะไม่เปลี่ยนการวางแนวของเครื่องหมาย คุณสามารถตั้งค่าการวางแนวของเครื่องหมายให้แบนราบกับโลกได้ เครื่องหมายที่วางแนวในลักษณะนี้จะหมุนเมื่อแผนที่หมุน และเปลี่ยนมุมมองเมื่อแผนที่เอียง เครื่องหมายแบบแบนจะคงขนาดไว้เมื่อซูมเข้าหรือออกแผนที่
หากต้องการเปลี่ยนการวางแนวของเครื่องหมาย ให้ตั้งค่าพร็อพเพอร์ตี้ flat ของเครื่องหมายเป็น true
Kotlin
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .flat(true) )
Java
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .flat(true));
หมุนเครื่องหมาย
คุณสามารถหมุนเครื่องหมายรอบจุดยึดได้ด้วยเมธอด Marker.setRotation() การหมุนจะวัดเป็นองศาตามเข็มนาฬิกาจากตำแหน่งเริ่มต้น เมื่อเครื่องหมายแบนราบอยู่บนแผนที่ ตำแหน่งเริ่มต้นคือทิศเหนือ เมื่อเครื่องหมายไม่แบน ตำแหน่งเริ่มต้นจะชี้ขึ้น และการหมุนจะเป็นไปในลักษณะที่เครื่องหมายหันหน้าเข้าหากล้องเสมอ
ตัวอย่างด้านล่างจะหมุนเครื่องหมาย 90° การตั้งค่าจุดยึดเป็น 0.5,0.5 จะทำให้เครื่องหมายหมุนรอบกึ่งกลางแทนที่จะหมุนรอบฐาน
Kotlin
val perthLocation = LatLng(-31.90, 115.86) val perth = map.addMarker( MarkerOptions() .position(perthLocation) .anchor(0.5f, 0.5f) .rotation(90.0f) )
Java
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker( new MarkerOptions() .position(perthLocation) .anchor(0.5f,0.5f) .rotation(90.0f));
ดัชนีลำดับ Z ของเครื่องหมาย
ดัชนีลำดับ Z จะระบุลำดับการซ้อนของเครื่องหมายนี้เทียบกับเครื่องหมายอื่นๆ บนแผนที่ เครื่องหมายที่มีดัชนีลำดับ Z สูงจะวาดอยู่เหนือเครื่องหมายที่มีดัชนีลำดับ Z ต่ำกว่า ค่าดัชนีลำดับ Z เริ่มต้นคือ 0
ตั้งค่าดัชนีลำดับ Z ในออบเจ็กต์ตัวเลือกของเครื่องหมายโดยเรียกใช้ MarkerOptions.zIndex() ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
Kotlin
map.addMarker( MarkerOptions() .position(LatLng(10.0, 10.0)) .title("Marker z1") .zIndex(1.0f) )
Java
map.addMarker(new MarkerOptions() .position(new LatLng(10, 10)) .title("Marker z1") .zIndex(1.0f));
คุณสามารถเข้าถึงดัชนีลำดับ Z ของเครื่องหมายได้โดยเรียกใช้ Marker.getZIndex() และเปลี่ยนได้โดยเรียกใช้ Marker.setZIndex()
เครื่องหมายจะวาดอยู่เหนือเลเยอร์ไทล์และภาพซ้อนทับอื่นๆ ที่ไม่ใช่เครื่องหมาย (ภาพซ้อนทับบนพื้นดิน เส้นหลายเส้น รูปหลายเหลี่ยม และรูปร่างอื่นๆ) เสมอ ไม่ว่าดัชนีลำดับ Z ของภาพซ้อนทับอื่นๆ จะเป็นเท่าใดก็ตาม เครื่องหมายจะถือว่าอยู่ในกลุ่มดัชนีลำดับ Z แยกต่างหากเมื่อเทียบกับภาพซ้อนทับอื่นๆ
อ่านเกี่ยวกับผลของดัชนีลำดับ Z ต่อกิจกรรมการคลิกด้านล่าง
จัดการเหตุการณ์ที่เกิดขึ้นกับเครื่องหมาย
Maps API ช่วยให้คุณฟังและตอบสนองต่อเหตุการณ์ที่เกิดขึ้นกับเครื่องหมายได้ หากต้องการฟังเหตุการณ์เหล่านี้ คุณต้องตั้งค่า Listener ที่เกี่ยวข้องในออบเจ็กต์ GoogleMap ที่เครื่องหมายเป็นของ เมื่อเกิดเหตุการณ์ขึ้นกับเครื่องหมายใดเครื่องหมายหนึ่งบนแผนที่ ระบบจะเรียกใช้การเรียกกลับของ Listener โดยส่งออบเจ็กต์ Marker ที่เกี่ยวข้องผ่านเป็นพารามิเตอร์ หากต้องการเปรียบเทียบออบเจ็กต์ Marker นี้กับการอ้างอิงออบเจ็กต์ Marker ของคุณเอง คุณต้องใช้ equals() ไม่ใช่ ==
คุณสามารถฟังเหตุการณ์ต่อไปนี้
กิจกรรมการคลิกตัวทำเครื่องหมาย
คุณสามารถใช้ OnMarkerClickListener เพื่อรอกิจกรรม
กิจกรรมการคลิกบนตัวทำเครื่องหมาย หากต้องการตั้งค่า Listener นี้บนแผนที่ ให้เรียกใช้ GoogleMap.setOnMarkerClickListener(OnMarkerClickListener) เมื่อผู้ใช้คลิกเครื่องหมาย ระบบจะเรียกใช้ onMarkerClick(Marker) และส่งเครื่องหมายผ่านเป็นอาร์กิวเมนต์ เมธอดนี้จะแสดงค่าบูลีนที่ระบุว่าคุณได้ใช้เหตุการณ์แล้วหรือไม่ (เช่น ต้องการระงับลักษณะการทำงานเริ่มต้น) หากแสดงผล false ลักษณะการทำงานเริ่มต้นจะเกิดขึ้นนอกเหนือจากลักษณะการทำงานที่กำหนดเอง ลักษณะการทำงานเริ่มต้นสำหรับเหตุการณ์
การคลิกเครื่องหมายคือการแสดงหน้าต่างข้อมูล (หากมี) และย้าย
กล้องเพื่อให้เครื่องหมายอยู่ตรงกลางแผนที่
ผลของดัชนีลำดับ Z ต่อเหตุการณ์การคลิก
- เมื่อผู้ใช้คลิกคลัสเตอร์เครื่องหมาย ระบบจะทริกเกอร์กิจกรรมการคลิกสำหรับเครื่องหมายที่มีดัชนีลำดับ Z สูงที่สุด
- ระบบจะทริกเกอร์เหตุการณ์อย่างน้อย 1 รายการต่อการคลิก 1 ครั้ง กล่าวคือ ระบบจะไม่ส่งการคลิกไปยังเครื่องหมายหรือภาพซ้อนทับอื่นๆ ที่มีค่าดัชนีลำดับ Z ต่ำกว่า
- การคลิกคลัสเตอร์เครื่องหมายจะทำให้การคลิกครั้งต่อๆ ไปหมุนเวียนไปตามคลัสเตอร์ โดยเลือกแต่ละรายการตามลำดับ ลำดับการหมุนเวียนจะให้ความสำคัญกับดัชนีลำดับ Z ก่อน จากนั้นจึงพิจารณาความใกล้เคียงกับจุดคลิก
- หากผู้ใช้คลิกนอกบริเวณใกล้เคียงของคลัสเตอร์ API จะคำนวณคลัสเตอร์ใหม่และรีเซ็ตสถานะการหมุนเวียนการคลิกเพื่อให้เริ่มจากจุดเริ่มต้น
- เครื่องหมายจะถือว่าอยู่ในกลุ่มดัชนีลำดับ Z แยกต่างหากเมื่อเทียบกับภาพซ้อนทับหรือรูปร่างอื่นๆ (เส้นหลายเส้น รูปหลายเหลี่ยม วงกลม และ/หรือภาพซ้อนทับบนพื้นดิน) ไม่ว่าดัชนีลำดับ Z ของภาพซ้อนทับอื่นๆ จะเป็นเท่าใดก็ตาม หากตัวทำเครื่องหมาย ภาพซ้อนทับ หรือรูปร่างหลายรายการซ้อนทับกัน ระบบจะหมุนเวียนกิจกรรมการคลิกผ่านคลัสเตอร์ตัวทำเครื่องหมายก่อน
เหตุการณ์การลากเครื่องหมาย
คุณสามารถใช้ OnMarkerDragListener เพื่อฟัง
เหตุการณ์การลากบนเครื่องหมาย หากต้องการตั้งค่า Listener นี้บนแผนที่ ให้เรียกใช้ GoogleMap.setOnMarkerDragListener หากต้องการลากเครื่องหมาย ผู้ใช้ต้องกดเครื่องหมายค้างไว้ เมื่อผู้ใช้ปล่อยนิ้วออกจากหน้าจอ เครื่องหมายจะยังคงอยู่ในตำแหน่งนั้น เมื่อลากเครื่องหมาย ระบบจะเรียกใช้ onMarkerDragStart(Marker) ในตอนแรก ขณะลากเครื่องหมาย ระบบจะเรียกใช้ onMarkerDrag(Marker) อย่างต่อเนื่อง เมื่อสิ้นสุดการลาก ระบบจะเรียกใช้ onMarkerDragEnd(Marker) คุณสามารถรับตำแหน่งของเครื่องหมายได้ทุกเมื่อโดยเรียกใช้ Marker.getPosition()