Bạn có thể sử dụng
MarkerView
để kết xuất các hệ phân cấp View tuỳ chỉnh của Android dưới dạng điểm đánh dấu trên bản đồ 3D. Điểm đánh dấu chế độ xem tuỳ chỉnh cho phép bạn hiển thị các bố cục của giao diện người dùng đa dạng, tiện ích tương tác và ảnh động chế độ xem được neo vào toạ độ địa lý.
Thêm điểm đánh dấu chế độ xem tuỳ chỉnh
Để thêm điểm đánh dấu chế độ xem tuỳ chỉnh vào bản đồ, hãy tạo một
MarkerViewOptions
thực thể, định cấu hình vị trí của thực thể đó bằng
setPosition
bằng cách sử dụng đối tượng
LatLngAltitude
và cung cấp View tuỳ chỉnh của Android bằng
setContent.
Sau đó, hãy chuyển các tuỳ chọn đến
addMarkerView
trên thực thể
GoogleMap3D.
Nếu bạn không cung cấp chế độ xem cho
setContent,
SDK sẽ tạo và kết xuất
PinViewmặc định.
// Add imports
import android.widget.TextView
import com.google.android.gms.maps3d.model.MarkerViewOptions
import com.google.android.gms.maps3d.model.latLngAltitude
// Create a custom Android View
val badgeView = TextView(context).apply {
text = "Empire State Building"
contentDescription = "Marker for Empire State Building"
setPadding(24, 12, 24, 12)
}
// Configure MarkerViewOptions and add the marker view to the map
val options = MarkerViewOptions().apply {
position = latLngAltitude {
latitude = 40.7484
longitude = -73.9857
altitude = 100.0
}
content = badgeView
}
val markerView = googleMap3D.addMarkerView(options)
Tuỳ chỉnh PinView mặc định
Thay vì tạo View tuỳ chỉnh hoàn toàn cho Android, bạn có thể kết xuất một
ghim tuỳ chỉnh bằng cách tạo
PinView
với PinConfiguration
tuỳ chỉnh (hoặc cập nhật thực thể hiện có bằng
setPinConfiguration)
và chuyển thực thể đó đến
setContent.
// Add imports
import android.graphics.Color
import com.google.android.gms.maps3d.model.MarkerViewOptions
import com.google.android.gms.maps3d.model.PinView
import com.google.android.gms.maps3d.model.latLngAltitude
import com.google.android.gms.maps3d.model.pinConfiguration
// Create a customized PinView
val customPinView = PinView(context, pinConfiguration {
backgroundColor = Color.BLUE
borderColor = Color.WHITE
})
// Configure MarkerViewOptions and add the marker view to the map
val options = MarkerViewOptions().apply {
position = latLngAltitude {
latitude = 40.7484
longitude = -73.9857
altitude = 100.0
}
content = customPinView
}
val markerView = googleMap3D.addMarkerView(options)
Xử lý các lượt tương tác và ảnh động
Vì a
MarkerView
gói một View của Android, nên bạn có thể đính kèm trình theo dõi lượt nhấp tiêu chuẩn và ảnh động chế độ xem
trực tiếp vào chế độ xem do
getContenttrả về.
Ngoài ra,
MarkerView
triển khai
Anchorable,
cho phép bạn neo
Popover
vào chế độ xem điểm đánh dấu bằng
addPopover:
markerView?.content?.setOnClickListener { view ->
// Animate the view when clicked
view.animate().rotationBy(90f).setDuration(300).start()
}
Định cấu hình độ cao và hành vi va chạm
Bạn có thể tuỳ chỉnh cách a
MarkerView
được định vị theo chiều dọc và cách tương tác với các nhãn hoặc
điểm đánh dấu bản đồ chồng chéo:
- Chế độ độ cao: Gọi
setAltitudeModetrênMarkerViewOptionsbằng hằng sốAltitudeMode. Theo mặc định,MarkerViewOptionssử dụngAltitudeMode.CLAMP_TO_GROUND. - Trạng thái va chạm: Gọi
setCollisionBehaviorbằng hằng sốCollisionBehavior(mặc định làCollisionBehavior.REQUIRED), và sử dụngsetCollisionPriorityđể chỉ định mức độ ưu tiên hiển thị khi các điểm đánh dấu va chạm.
Khả năng tiếp cận và xoá
Bạn chịu trách nhiệm định cấu hình các thuộc tính hỗ trợ tiếp cận (chẳng hạn như
contentDescription) trên View tuỳ chỉnh của Android được cung cấp cho
setContent.
Để xoá
MarkerView
khỏi bản đồ, hãy gọi
remove:
markerView?.remove()