Các điểm đánh dấu cho biết các vị trí riêng lẻ trên bản đồ. Bạn có thể tuỳ chỉnh điểm đánh dấu của mình bằng cách thay đổi màu mặc định hoặc thay thế biểu tượng điểm đánh dấu bằng hình ảnh. Cửa sổ thông tin có thể cung cấp thêm ngữ cảnh cho một điểm đánh dấu.
Mã mẫu
Kho lưu trữ Apidemos trên GitHub bao gồm một mẫu minh hoạ các đặc điểm khác nhau của điểm đánh dấu:
Kotlin
- MapWithMarker: Một bản đồ đơn giản có điểm đánh dấu. Xem hướng dẫn về cách thêm bản đồ có điểm đánh dấu-kt.
- MarkerDemoActivity: Sử dụng điểm đánh dấu trên bản đồ, bao gồm cả các tuỳ chọn và người nghe
Java
- MapWithMarker: Một bản đồ đơn giản có điểm đánh dấu. Xem hướng dẫn về cách thêm bản đồ có điểm đánh dấu.
- MarkerDemoActivity: Sử dụng điểm đánh dấu trên bản đồ, bao gồm cả các tuỳ chọn và người nghe
Giới thiệu
Điểm đánh dấu xác định các vị trí trên bản đồ. Điểm đánh dấu mặc định sử dụng
, phổ biến đối với giao diện của Google Maps. Bạn có thể thay đổi
màu của biểu tượng, hình ảnh hoặc điểm neo qua API. Điểm đánh dấu là các đối tượng thuộc loại
Marker
và được thêm vào bản đồ bằng
GoogleMap.addMarker(markerOptions)
.
Điểm đánh dấu được thiết kế có tính tương tác. Họ nhận được click
sự kiện muộn nhất vào
và thường được dùng với trình nghe sự kiện để cung cấp thông tin
Windows. Đặt thuộc tính draggable
của điểm đánh dấu thành true
cho phép người dùng thay đổi vị trí của điểm đánh dấu. Nhấn và giữ để
kích hoạt khả năng di chuyển điểm đánh dấu.
Theo mặc định, khi người dùng nhấn vào một điểm đánh dấu, thanh công cụ bản đồ sẽ xuất hiện ở phía dưới cùng bên phải bản đồ, giúp người dùng truy cập nhanh vào ứng dụng di động Google Maps. Bạn có thể tắt thanh công cụ. Để biết thêm thông tin, hãy xem hướng dẫn kiểm soát.
Bắt đầu sử dụng điểm đánh dấu
Tập này của Maps Live trình bày kiến thức cơ bản về cách thêm điểm đánh dấu vào bản đồ của bạn bằng cách sử dụng SDK bản đồ dành cho Android.
Thêm một điểm đánh dấu
Ví dụ sau minh hoạ cách thêm một điểm đánh dấu vào bản đồ. Điểm đánh dấu là
được tạo tại toạ độ -33.852,151.211
(Sydney, Úc) và hiển thị
chuỗi 'Điểm đánh dấu ở Sydney' trong cửa sổ thông tin khi nhấp vào.
Kotlin
override fun onMapReady(googleMap: GoogleMap) { // Add a marker in Sydney, Australia, // and move the maps 'camera to the same location. val sydney = LatLng(-33.852, 151.211) googleMap.addMarker( MarkerOptions() .position(sydney) .title(Ma"rker in Sydney) " ) googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) }
Java
@Override public void onMapReady(GoogleMap googleMap) { // Add a marker in Sydney, Australia, // and move the maps' camera to the same location. LatLng sydney = new LatLng(-33.852, 151.211); googleMap.addMarker(new MarkerOptions() .position(sydney) .title(M"arker in Sydney)"); googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); }
Hiển thị thông tin bổ sung về một điểm đánh dấu
Một yêu cầu chung là trình bày thêm thông tin về một địa điểm hoặc vị trí khi người dùng nhấn vào một điểm đánh dấu trên bản đồ. Xem hướng dẫn về cửa sổ thông tin.
Liên kết dữ liệu với một điểm đánh dấu
Bạn có thể lưu trữ đối tượng dữ liệu tuỳ ý bằng một điểm đánh dấu bằng cách sử dụng Marker.setTag()
,
và truy xuất đối tượng dữ liệu bằng Marker.getTag()
. Mẫu dưới đây cho biết cách
bạn có thể đếm số lần một điểm đánh dấu đã được nhấp vào bằng cách sử dụng các thẻ:
Kotlin
/** * A demo class that stores and retrieves data objects with each marker. */ class MarkerDemoActivity : AppCompatActivity(), OnMarkerClickListener, OnMapReadyCallback { private val PERTH = LatLng(-31.952854, 115.857342) private val SYDNEY = LatLng(-33.87365, 151.20689) private val BRISBANE = LatLng(-27.47093, 153.0235) private var markerPerth: Marker? = null private var markerSydney: Marker? = null private var markerBrisbane: Marker? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_markers) val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment? mapFragment!!.getMapAsync(this) } /** Called when the map is ready. */ override fun onMapReady(map: GoogleMap) { // Add some markers to the map, and add a data object to each marker. markerPerth = map.addMarker( MarkerOptions() .position(PERTH) .title(Pe"rth) " ) markerPerth?.tag = 0 markerSydney = map.addMarker( MarkerOptions() .position(SYDNEY) .title(Sy"dney) " ) markerSydney?.tag = 0 markerBrisbane = map.addMarker( MarkerOptions() .position(BRISBANE) .title(Br"isbane) " ) markerBrisbane?.tag = 0 // Set a listener for marker click. map.setOnMarkerClickListener(this) } /** Called when the user clicks a marker. */ override fun onMarkerClick(marker: Marker): Boolean { // 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( this, ${"marker.title} has been clicked $newClickCount times., " Toast.LENGTH_SHORT ).show() } // Return false to indicate that we have not consumed the event and that we wish // for the default behavior to occur (which is for the camera to move such that the // marker is centered and for the markers 'info window to open, if it has one). return false } }
Java
/** * A demo class that stores and retrieves data objects with each marker. */ public class MarkerDemoActivity extends AppCompatActivity implements GoogleMap.OnMarkerClickListener, OnMapReadyCallback { private final LatLng PERTH = new LatLng(-31.952854, 115.857342); private final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); private final LatLng BRISBANE = new LatLng(-27.47093, 153.0235); private Marker markerPerth; private Marker markerSydney; private Marker markerBrisbane; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_markers); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** Called when the map is ready. */ @Override public void onMapReady(GoogleMap map) { // Add some markers to the map, and add a data object to each marker. markerPerth = map.addMarker(new MarkerOptions() .position(PERTH) .title(P"erth)"); markerPerth.setTag(0); markerSydney = map.addMarker(new MarkerOptions() .position(SYDNEY) .title(S"ydney)"); markerSydney.setTag(0); markerBrisbane = map.addMarker(new MarkerOptions() .position(BRISBANE) .title(B"risbane)"); markerBrisbane.setTag(0); // Set a listener for marker click. map.setOnMarkerClickListener(this); } /** Called when the user clicks a marker. */ @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(this, marker.getTitle() + "has been clicked "+ clickCount + "times.," Toast.LENGTH_SHORT).show(); } // Return false to indicate that we have not consumed the event and that we wish // for the default behavior to occur (which is for the camera to move such that the // marker is centered and for the markers' info window to open, if it has one). return false; } }
Dưới đây là một số ví dụ về các trường hợp hữu ích trong việc lưu trữ và truy xuất dữ liệu bằng điểm đánh dấu:
- Ứng dụng của bạn có thể phục vụ cho nhiều loại điểm đánh dấu và bạn cần phải xử lý chúng
khác nhau khi người dùng nhấp vào quảng cáo. Để thực hiện việc này, bạn có thể lưu trữ
String
với điểm đánh dấu cho biết loại tệp. - Bạn có thể đang tiếp xúc với một hệ thống có mã nhận dạng bản ghi duy nhất, nơi các điểm đánh dấu đại diện cho các bản ghi cụ thể trong hệ thống đó.
- Dữ liệu điểm đánh dấu có thể cho biết mức độ ưu tiên được sử dụng khi quyết định chỉ số z của một điểm đánh dấu.
Làm cho điểm đánh dấu có thể kéo
Bạn có thể định vị lại điểm đánh dấu sau khi điểm đánh dấu đó được thêm vào bản đồ, miễn là
Thuộc tính draggable
được đặt thành true
. Nhấn và giữ điểm đánh dấu để bật
đang kéo. Khi bạn gỡ ngón tay ra khỏi màn hình, điểm đánh dấu sẽ vẫn ở trong
vị trí đó.
Theo mặc định, bạn không thể kéo điểm đánh dấu. Bạn phải đặt điểm đánh dấu rõ ràng là
có thể kéo bằng MarkerOptions.draggable(boolean)
trước khi thêm vào
bản đồ hoặc Marker.setDraggable(boolean)
sau khi đã được thêm vào bản đồ.
Bạn có thể nghe các sự kiện kéo trên điểm đánh dấu, như được mô tả trong phần Kéo điểm đánh dấu
sự kiện.
Đoạn mã dưới đây thêm một điểm đánh dấu có thể kéo tại Perth, Úc.
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));
Tuỳ chỉnh điểm đánh dấu
Video này giới thiệu các cách sử dụng điểm đánh dấu để trực quan hoá các vị trí trên bản đồ.
Điểm đánh dấu có thể xác định một hình ảnh tuỳ chỉnh để hiển thị thay cho biểu tượng mặc định. Việc xác định biểu tượng liên quan đến việc đặt một số thuộc tính ảnh hưởng đến hành vi trực quan của điểm đánh dấu.
Điểm đánh dấu hỗ trợ tuỳ chỉnh thông qua các thuộc tính sau:
- Vị trí (Bắt buộc)
LatLng
cho vị trí của điểm đánh dấu trên bản đồ. Đây là yêu cầu duy nhất cho một đối tượngMarker
.- Neo
- Điểm trên hình ảnh sẽ được đặt tại vị trí LatLng của điểm đánh dấu. Thuộc tính này mặc định đặt ở giữa phần dưới cùng của hình ảnh.
- Alpha
- Đặt độ mờ của điểm đánh dấu. Giá trị mặc định là 1.0.
- Tiêu đề
- Một chuỗi xuất hiện trong cửa sổ thông tin khi người dùng nhấn vào điểm đánh dấu.
- Đoạn trích
- Văn bản bổ sung hiển thị bên dưới tiêu đề.
- Biểu tượng
- Một bitmap được hiển thị thay cho hình ảnh điểm đánh dấu mặc định.
- Có thể kéo
- Đặt thành
true
nếu bạn muốn cho phép người dùng di chuyển điểm đánh dấu. Mặc định làfalse
. - Hiển thị
- Đặt thành
false
để ẩn điểm đánh dấu. Mặc định làtrue
. - Hướng phẳng hoặc hướng biển quảng cáo
- Theo mặc định, điểm đánh dấu sử dụng hướng của biển quảng cáo, nghĩa là chúng được vẽ được hướng vào màn hình của thiết bị thay vì hướng vào bề mặt bản đồ. Xoay, nghiêng hoặc thu phóng bản đồ không thay đổi hướng của điểm đánh dấu. Bạn có thể đặt hướng của điểm đánh dấu là phẳng so với trái đất. Điểm đánh dấu phẳng sẽ xoay khi bản đồ được xoay và thay đổi phối cảnh khi bản đồ bị nghiêng. Giống như điểm đánh dấu trên biển quảng cáo, điểm đánh dấu phẳng vẫn giữ nguyên kích thước khi bản đồ được phóng to hoặc thu nhỏ.
- Góc xoay
- Hướng của điểm đánh dấu, được chỉ định theo độ theo chiều kim đồng hồ. Mặc định vị trí sẽ thay đổi nếu điểm đánh dấu bằng phẳng. Vị trí mặc định cho hình phẳng điểm đánh dấu được căn phía bắc. Khi điểm đánh dấu không phẳng, giá trị mặc định và hướng xoay sao cho điểm đánh dấu luôn hướng lên trên hướng về phía máy ảnh.
Đoạn mã dưới đây tạo một điểm đánh dấu đơn giản, với biểu tượng mặc định.
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));
Tuỳ chỉnh màu đánh dấu
Có thể tuỳ chỉnh màu của hình ảnh điểm đánh dấu mặc định bằng cách truyền một
Đối tượng BitmapDescriptor
cho phương thức icon(). Bạn có thể sử dụng tập hợp
màu được xác định trước trong BitmapDescriptorFactory
hoặc đặt màu đánh dấu tùy chỉnh bằng
BitmapDescriptorFactory.defaultMarker(float hue)
. Màu sắc là một giá trị
từ 0 đến 360, đại diện cho các điểm trên bánh xe màu.
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)));
Tùy chỉnh độ mờ của điểm đánh dấu
Bạn có thể kiểm soát độ mờ của điểm đánh dấu bằng phương pháp MarkerOptions.alpha(). Alpha phải được chỉ định là số thực có độ chính xác đơn từ 0,0 đến 1,0, trong đó 0 hoàn toàn trong suốt và 1 là hoàn toàn mờ đục.
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));
Tuỳ chỉnh hình ảnh điểm đánh dấu
Bạn có thể thay thế hình ảnh điểm đánh dấu mặc định bằng một hình ảnh điểm đánh dấu tuỳ chỉnh, thường
gọi là biểu tượng. Các biểu tượng tuỳ chỉnh luôn được đặt là BitmapDescriptor
và
được xác định bằng một trong các phương thức trong
Lớp BitmapDescriptorFactory
.
fromAsset(String assetName)
- Tạo một điểm đánh dấu tuỳ chỉnh bằng tên của hình ảnh Bitmap trong thành phần thư mục.
fromBitmap(Bitmap image)
- Tạo một điểm đánh dấu tuỳ chỉnh từ hình ảnh Bitmap.
fromFile(String fileName)
- Tạo biểu tượng tuỳ chỉnh bằng tên của tệp hình ảnh Bitmap bộ nhớ trong.
fromPath(String absolutePath)
- Tạo một điểm đánh dấu tuỳ chỉnh từ một đường dẫn tệp tuyệt đối của hình ảnh Bitmap.
fromResource(int resourceId)
- Tạo một điểm đánh dấu tuỳ chỉnh bằng mã nhận dạng tài nguyên của hình ảnh Bitmap.
Đoạn mã dưới đây tạo một điểm đánh dấu có biểu tượng tuỳ chỉnh.
Kotlin
val melbourneLocation = LatLng(-37.813, 144.962) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLocation) .title(Me"lbourne) " .snippet(Po"pulation: 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(M"elbourne)" .snippet(P"opulation: 4,137,400)" .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
Làm phẳng điểm đánh dấu
Biểu tượng điểm đánh dấu thường được vẽ tương ứng với màn hình; xoay, nghiêng hoặc việc thu phóng bản đồ sẽ không làm thay đổi hướng của điểm đánh dấu. Bạn có thể đặt hướng của điểm đánh dấu phải phẳng với trái đất. Điểm đánh dấu định hướng theo cách này sẽ xoay khi bản đồ bị xoay và thay đổi phối cảnh khi bản đồ bị nghiêng. Điểm đánh dấu phẳng sẽ giữ nguyên kích thước của chúng khi bản đồ được phóng to hoặc thu nhỏ.
Để thay đổi hướng của điểm đánh dấu, hãy đặt thuộc tính flat
của điểm đánh dấu thành
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));
Xoay điểm đánh dấu
Bạn có thể xoay điểm đánh dấu xung quanh điểm neo của nó bằng
Marker
.setRotation()
. Độ xoay được đo theo độ theo chiều kim đồng hồ
khỏi vị trí mặc định. Khi điểm đánh dấu bằng phẳng trên bản đồ, giá trị mặc định
là Bắc. Khi điểm đánh dấu không phẳng, vị trí mặc định sẽ trỏ
hướng lên trên và xoay sao cho điểm đánh dấu luôn hướng về phía máy ảnh.
Ví dụ bên dưới xoay điểm đánh dấu 90°. Đặt điểm neo thành
0.5,0.5
làm cho điểm đánh dấu xoay quanh tâm, thay vì xoay
cơ sở.
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));
Chỉ số z của điểm đánh dấu
Chỉ mục z chỉ định thứ tự ngăn xếp của điểm đánh dấu này, so với các điểm đánh dấu khác
trên bản đồ. Điểm đánh dấu có chỉ số z cao được vẽ ở phía trên điểm đánh dấu có chỉ số thấp hơn
chỉ mục z. Giá trị chỉ mục z mặc định là 0
.
Đặt chỉ mục z trên đối tượng tuỳ chọn của điểm đánh dấu bằng cách gọi
MarkerOptions.zIndex()
, như minh hoạ trong đoạn mã sau:
Kotlin
map.addMarker( MarkerOptions() .position(LatLng(10.0, 10.0)) .title(Ma"rker z1) " .zIndex(1.0f) )
Java
map.addMarker(new MarkerOptions() .position(new LatLng(10, 10)) .title(M"arker z1)" .zIndex(1.0f));
Bạn có thể truy cập chỉ mục z của điểm đánh dấu bằng cách gọi Marker.getZIndex()
, và bạn cũng có thể
hãy thay đổi chế độ cài đặt này bằng cách gọi Marker.setZIndex()
.
Điểm đánh dấu luôn được vẽ phía trên các lớp ô và lớp phủ không phải điểm đánh dấu khác (mặt đất lớp phủ, hình nhiều đường, đa giác và các hình dạng khác) bất kể chỉ số z của các lớp phủ khác. Điểm đánh dấu được coi là nằm riêng biệt z-index so với các lớp phủ khác.
Hãy đọc về ảnh hưởng của chỉ mục z đối với các sự kiện nhấp chuột trong phần dưới đây.
Xử lý sự kiện đánh dấu
API Maps cho phép bạn lắng nghe và phản hồi các sự kiện điểm đánh dấu. Để nghe
các sự kiện này, bạn phải thiết lập trình nghe tương ứng trên GoogleMap
đối tượng chứa điểm đánh dấu. Khi sự kiện đó xảy ra trên một trong
các điểm đánh dấu trên bản đồ, lệnh gọi lại của trình nghe sẽ được gọi bằng hàm
đối tượng Marker
tương ứng được truyền qua dưới dạng tham số. Để so sánh
Đối tượng Marker
có tham chiếu riêng đến đối tượng Marker
, bạn phải sử dụng
equals()
chứ không phải ==
.
Bạn có thể nghe các sự kiện sau:
Sự kiện nhấp vào điểm đánh dấu
Bạn có thể dùng OnMarkerClickListener
để nghe
cho sự kiện nhấp chuột trên điểm đánh dấu. Để thiết lập trình nghe này trên bản đồ, hãy gọi
GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)
. Khi một người dùng
nhấp vào một điểm đánh dấu, onMarkerClick(Marker)
sẽ được gọi và điểm đánh dấu sẽ
được truyền qua dưới dạng đối số. Phương thức này trả về một giá trị boolean cho biết
cho dù bạn đã sử dụng sự kiện hay chưa (tức là bạn muốn chặn giá trị mặc định
hành vi). Nếu trả về false
thì hành vi mặc định sẽ xảy ra trong
ngoài hành vi tuỳ chỉnh của mình. Hành vi mặc định đối với nhấp chuột đánh dấu
là hiển thị cửa sổ thông tin (nếu có) và di chuyển
sao cho điểm đánh dấu được căn giữa trên bản đồ.
Ảnh hưởng của chỉ mục z đối với sự kiện nhấp chuột:
- Khi người dùng nhấp vào một cụm điểm đánh dấu, sự kiện nhấp chuột sẽ được kích hoạt cho điểm đánh dấu có chỉ mục z cao nhất.
- Hệ thống kích hoạt tối đa một sự kiện cho mỗi lượt nhấp. Nói cách khác, lượt nhấp không phải được chuyển xuống các điểm đánh dấu hoặc lớp phủ khác có giá trị chỉ mục z thấp hơn.
- Việc nhấp vào một cụm điểm đánh dấu sẽ làm cho các lần nhấp tiếp theo quay vòng qua rồi chọn lần lượt từng cụm từ. Thứ tự của chu kỳ ưu tiên đầu tiên chỉ mục z, sau đó độ gần đến điểm nhấp chuột.
- Nếu người dùng nhấp vào bên ngoài vùng lân cận của cụm, API sẽ tính toán lại cụm đồng thời đặt lại trạng thái của chu kỳ nhấp chuột để nó bắt đầu từ đầu tiên.
- Sự kiện nhấp chuột rơi qua các cụm điểm đánh dấu tới các hình dạng và lớp phủ khác trước khi bắt đầu lại chu kỳ.
- Các điểm đánh dấu được xem là nằm trong một nhóm chỉ số z riêng biệt so với cho các lớp phủ hoặc hình dạng khác (hình nhiều đường, đa giác, hình tròn và/hoặc mặt đất ), bất kể chỉ mục z của các lớp phủ khác là gì. Nếu có nhiều điểm đánh dấu, lớp phủ hoặc hình dạng chồng lên nhau, sự kiện nhấp chuột được quay vòng qua cụm điểm đánh dấu trước, sau đó được kích hoạt cho các cụm điểm đánh dấu khác lớp phủ hoặc hình dạng có thể nhấp vào, dựa trên giá trị z-index của chúng.
Sự kiện kéo điểm đánh dấu
Bạn có thể dùng OnMarkerDragListener
để nghe
kéo các sự kiện trên một điểm đánh dấu. Để thiết lập trình nghe này trên bản đồ, hãy gọi
GoogleMap.setOnMarkerDragListener
. Để kéo điểm đánh dấu, người dùng phải nhấn và giữ
trên điểm đánh dấu. Khi người dùng nhấc ngón tay ra khỏi màn hình, điểm đánh dấu
sẽ vẫn ở vị trí đó. Khi điểm đánh dấu được kéo,
onMarkerDragStart(Marker)
được gọi ban đầu. Trong khi điểm đánh dấu đang được
đã kéo, onMarkerDrag(Marker)
được gọi liên tục. Ở cuối quá trình kéo
onMarkerDragEnd(Marker)
sẽ được gọi. Bạn có thể biết vị trí của điểm đánh dấu tại
bất cứ lúc nào bằng cách gọi Marker.getPosition()
.