ایجاد نشانگر با نماهای سفارشی

تصویر سه‌بعدی شهر نیویورک که «ساختمان امپایر استیت» را با سه نشانگر دیجیتال سفارشی معلق در بالای آن نشان می‌دهد، ازجمله گوریل کارتونی با برچسب

می‌توانید از 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 و نحوه تعامل آن با برچسب‌ها یا نشانگرهای هم‌پوشان نقشه را سفارشی‌سازی کنید:

دسترس‌پذیری و برداشتن محتوا

شما مسئول پیکربندی ویژگی‌های دسترس‌پذیری (مانند contentDescription) در Android سفارشی View ارائه‌شده به setContent هستید.

برای برداشتن MarkerView از نقشه، با remove تماس بگیرید:

markerView?.remove()