میتوانید از
MarkerView
برای ارائه سلسلهمراتب سفارشی Android View بهعنوان نشانگر در نقشه سهبعدی استفاده کنید. نشانگرهای نمای سفارشی به شما امکان میدهند چیدمانهای میانای کاربر غنی، ابزارههای تعاملی، و پویانماییهای نمای لنگرانداخته به مختصات جغرافیایی را نمایش دهید.
افزودن نشانگر نمای سفارشی
To add a custom view marker to your map, create a
MarkerViewOptions
instance, configure its location with
setPosition
using a
LatLngAltitude
object, and supply your custom Android View using
setContent.
سپس، گزینهها را به
addMarkerView
در
GoogleMap3D
نمونهتان منتقل کنید.
اگر نمایی برای
setContent ارائه نکنید،
کیت توسعه نرمافزار یک
PinView پیشفرض ایجاد و ارائه میکند.
// 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)
سفارشیسازی PinView پیشفرض
بهجای ساختن Android View کاملاً سفارشی، میتوانید با ایجاد
PinView
با
PinConfiguration
سفارشی (یا بهروزرسانی نمونه موجود با
setPinConfiguration)
و ارسال آن به
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)
مدیریت تعاملها و پویانماییها
چون
MarkerView
یک View Android را دربرمیگیرد، میتوانید شنوندگان کلیک استاندارد و پویانماییهای نما را مستقیماً به نمای برگرداندهشده توسط
getContent
پیوست کنید.
علاوهبراین،
MarkerView
Anchorable
را پیادهسازی میکند که به شما امکان میدهد
Popover
را بااستفاده از
addPopover
به نمای نشانگر متصل کنید:
markerView?.content?.setOnClickListener { view ->
// Animate the view when clicked
view.animate().rotationBy(90f).setDuration(300).start()
}
پیکربندی ارتفاع و رفتار تصادم
میتوانید نحوه قرارگیری عمودی
MarkerView
و نحوه تعامل آن با برچسبها یا نشانگرهای همپوشان نقشه را سفارشیسازی کنید:
- حالت ارتفاع:
setAltitudeModeرا درMarkerViewOptionsبا ثابتAltitudeModeفراخوانی کنید. بهطور پیشفرض،MarkerViewOptionsازAltitudeMode.CLAMP_TO_GROUNDاستفاده میکند. - عملکرد برخورد: با
setCollisionBehaviorباCollisionBehaviorثابت (پیشفرض رویCollisionBehavior.REQUIRED)، و ازsetCollisionPriorityبرای مشخص کردن اولویت نمایش وقتی نشانگرها برخورد میکنند استفاده کنید.
دسترسپذیری و برداشتن محتوا
شما مسئول پیکربندی ویژگیهای دسترسپذیری (مانند
contentDescription) در Android سفارشی View ارائهشده به
setContent هستید.
برای برداشتن
MarkerView
از نقشه، با
remove تماس بگیرید:
markerView?.remove()