เครื่องหมาย

เลือกแพลตฟอร์ม: Android iOS JavaScript

แผนที่ที่มีเครื่องหมายหลายรายการ

เครื่องหมายระบุตำแหน่งบนแผนที่ เครื่องหมายเริ่มต้นใช้ไอคอนมาตรฐานที่พบได้ทั่วไปใน 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()