
เครื่องหมายจะระบุตำแหน่งบนแผนที่ เครื่องหมายเริ่มต้นจะใช้ไอคอนมาตรฐานที่พบได้ทั่วไปในรูปลักษณ์ของ Google Maps คุณเปลี่ยนสี รูปภาพ หรือจุดยึดของไอคอนได้ผ่าน API เครื่องหมายคือออบเจ็กต์ประเภท Marker และเพิ่มลงในแผนที่ด้วยเมธอด GoogleMap.addMarker(markerOptions)
เครื่องหมายได้รับการออกแบบมาให้เป็นแบบอินเทอร์แอกทีฟ โดยค่าเริ่มต้น เครื่องหมายจะรับเหตุการณ์ click และมักใช้กับ Listener เหตุการณ์เพื่อแสดงหน้าต่างข้อมูล การตั้งค่าพร็อพเพอร์ตี้ draggable ของเครื่องหมายเป็น true จะอนุญาตให้ผู้ใช้เปลี่ยนตำแหน่งของเครื่องหมายได้ กดค้างเพื่อเปิดใช้งานความสามารถในการย้ายเครื่องหมาย
โดยค่าเริ่มต้น เมื่อผู้ใช้แตะเครื่องหมาย แถบเครื่องมือแผนที่จะปรากฏที่ด้านขวาล่างของแผนที่ ซึ่งช่วยให้ผู้ใช้เข้าถึงแอป Google Maps บนมือถือได้อย่างรวดเร็ว คุณสามารถปิดใช้แถบเครื่องมือได้ ดูข้อมูลเพิ่มเติมได้ที่คู่มือการควบคุม
เพิ่มเครื่องหมาย
ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มเครื่องหมายลงในแผนที่ เครื่องหมายจะสร้างขึ้นที่พิกัด -33.852,151.211 (ซิดนีย์ ออสเตรเลีย) และแสดงสตริง "เครื่องหมายในซิดนีย์" ในหน้าต่างข้อมูลเมื่อคลิก
Kotlin
// Add a marker in Sydney, Australia, // and move the map's camera to the same location. val sydney = LatLng(-33.852, 151.211) map.addMarker( MarkerOptions() .position(sydney) .title("Marker in Sydney"), ) 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); 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), )
Java
final LatLng perthLocation = new LatLng(-31.90, 115.86); Marker perth = map.addMarker(new MarkerOptions().position(perthLocation).draggable(true));
ปรับแต่งเครื่องหมาย
วิดีโอนี้แสดงวิธีใช้เครื่องหมายเพื่อแสดงภาพสถานที่ตั้งบนแผนที่
เครื่องหมายอาจกำหนดรูปภาพที่กำหนดเองเพื่อแสดงแทนไอคอนเริ่มต้น การกำหนดไอคอนเกี่ยวข้องกับการตั้งค่าพร็อพเพอร์ตี้จำนวนหนึ่งที่ส่งผลต่อลักษณะการทำงานของภาพของเครื่องหมาย
เครื่องหมายรองรับการปรับแต่งผ่านพร็อพเพอร์ตี้ต่อไปนี้
- ตำแหน่ง (ต้องระบุ)
- ค่า
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() ควรระบุอัลฟ่าเป็นค่าแบบลอยระหว่าง 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 ที่เครื่องหมายนั้นอยู่ เมื่อเหตุการณ์เกิดขึ้นที่เครื่องหมายใดเครื่องหมายหนึ่งบนแผนที่ ระบบจะเรียกใช้ Callback ของ Listener โดยส่งออบเจ็กต์ Marker ที่เกี่ยวข้องเป็นพารามิเตอร์ หากต้องการเปรียบเทียบออบเจ็กต์ Marker นี้กับการอ้างอิงของคุณเองกับออบเจ็กต์ Marker คุณต้องใช้ equals() ไม่ใช่ ==
คุณสามารถฟังเหตุการณ์ต่อไปนี้ได้
กิจกรรมการคลิกเครื่องหมาย
คุณสามารถใช้ OnMarkerClickListener เพื่อฟังกิจกรรมการคลิกบนเครื่องหมายได้ หากต้องการตั้งค่า Listener นี้ในแผนที่ ให้เรียกใช้ GoogleMap.setOnMarkerClickListener(OnMarkerClickListener) เมื่อผู้ใช้คลิกเครื่องหมาย ระบบจะเรียกใช้ onMarkerClick(Marker) และส่งเครื่องหมายเป็นอาร์กิวเมนต์ เมธอดนี้จะแสดงผลบูลีนที่ระบุว่าคุณได้ใช้เหตุการณ์หรือไม่ (เช่น คุณต้องการระงับลักษณะการทำงานเริ่มต้น) หากแสดงผลเป็น false ลักษณะการทำงานเริ่มต้นจะเกิดขึ้นนอกเหนือจากลักษณะการทำงานที่กำหนดเอง ลักษณะการทำงานเริ่มต้นสำหรับกิจกรรมการคลิกเครื่องหมายคือการแสดงหน้าต่างข้อมูล (หากมี) และเลื่อนกล้องเพื่อให้เครื่องหมายอยู่ตรงกลางแผนที่
ผลของดัชนีลำดับ Z ต่อกิจกรรมการคลิก
- เมื่อผู้ใช้คลิกกลุ่มเครื่องหมาย ระบบจะทริกเกอร์กิจกรรมการคลิกสำหรับเครื่องหมายที่มีดัชนีลำดับ Z สูงสุด
- ระบบจะเรียกให้แสดงเหตุการณ์ได้สูงสุด 1 รายการต่อการคลิก กล่าวคือ ระบบจะไม่ส่งต่อการคลิกไปยังเครื่องหมายหรือการวางซ้อนอื่นๆ ที่มีค่าดัชนีลำดับ Z ต่ำกว่า
- การคลิกกลุ่มเครื่องหมายจะทำให้การคลิกครั้งต่อๆ ไปวนไปตามกลุ่ม โดยเลือกแต่ละรายการตามลำดับ ลำดับของวงจรจะจัดลำดับความสำคัญของดัชนีลำดับ Z ก่อน จากนั้นจึงจัดลำดับความสำคัญของความใกล้ชิดกับจุดคลิก
- หากผู้ใช้คลิกนอกบริเวณใกล้เคียงของคลัสเตอร์ API จะคำนวณคลัสเตอร์ใหม่และรีเซ็ตสถานะของวงจรการคลิกเพื่อให้เริ่มตั้งแต่ต้น
- เครื่องหมายจะถือว่าอยู่ในกลุ่มดัชนีลำดับ Z แยกต่างหากเมื่อเทียบกับการวางซ้อนหรือรูปร่างอื่นๆ (เส้นประกอบ รูปหลายเหลี่ยม วงกลม และ/หรือการวางซ้อนบนพื้น) โดยไม่คำนึงถึงดัชนีลำดับ Z ของการวางซ้อนอื่นๆ หากมีเครื่องหมาย การวางซ้อน หรือรูปร่างหลายรายการวางซ้อนกัน กิจกรรมการคลิกจะวนผ่านกลุ่มเครื่องหมายก่อน
เหตุการณ์การลากเครื่องหมาย
คุณสามารถใช้ OnMarkerDragListener เพื่อฟังเหตุการณ์การลากบนเครื่องหมายได้ หากต้องการตั้งค่า Listener นี้ในแผนที่ ให้เรียกใช้ GoogleMap.setOnMarkerDragListener หากต้องการลากเครื่องหมาย ผู้ใช้ต้องกดเครื่องหมายค้างไว้ เมื่อผู้ใช้นำนิ้วออกจากหน้าจอ เครื่องหมายจะยังคงอยู่ในตำแหน่งนั้น เมื่อลากเครื่องหมาย ระบบจะเรียกใช้ onMarkerDragStart(Marker) ก่อน ขณะลากเครื่องหมาย ระบบจะเรียกใช้ onMarkerDrag(Marker) อย่างต่อเนื่อง เมื่อสิ้นสุดการลาก ระบบจะเรียกใช้ onMarkerDragEnd(Marker) คุณดูตำแหน่งของเครื่องหมายได้ทุกเมื่อโดยเรียกใช้ Marker.getPosition()