कस्टम Android View के क्रम को 3D मैप पर मार्कर के तौर पर दिखाने के लिए,
MarkerView
का इस्तेमाल किया जा सकता है. कस्टम व्यू मार्कर की मदद से, यूज़र इंटरफ़ेस (यूआई) के बेहतर लेआउट, इंटरैक्टिव विजेट, और भौगोलिक कोऑर्डिनेट से जुड़े व्यू एनिमेशन दिखाए जा सकते हैं.
कस्टम व्यू मार्कर जोड़ना
अपने मैप में कस्टम व्यू मार्कर जोड़ने के लिए,
MarkerViewOptions
इंस्टेंस बनाएं. इसके बाद,
LatLngAltitude
ऑब्जेक्ट का इस्तेमाल करके,
setPosition
की मदद से उसकी जगह कॉन्फ़िगर करें. साथ ही,
setContent का इस्तेमाल करके, अपना कस्टम Android View उपलब्ध कराएं.
इसके बाद, अपने
GoogleMap3D
इंस्टेंस पर,
addMarkerView
को विकल्प पास करें.
अगर
setContentको कोई व्यू उपलब्ध नहीं कराया जाता है,
तो SDK डिफ़ॉल्ट
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 बनाने के बजाय, पिन को पसंद के मुताबिक बनाया जा सकता है. इसके लिए, कस्टम PinConfiguration के साथ PinView बनाएं. इसके अलावा, मौजूदा इंस्टेंस को 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
में Android View रैप होता है. इसलिए,
getContent से मिले व्यू में, स्टैंडर्ड क्लिक लिसनर और व्यू
एनिमेशन सीधे तौर पर जोड़े जा सकते हैं.
इसके अलावा,
MarkerView
लागू करता है.
Anchorable,
इससे मार्कर व्यू में
addPopoverका इस्तेमाल करके,
Popover
को ऐंकर किया जा सकता है:
markerView?.content?.setOnClickListener { view ->
// Animate the view when clicked
view.animate().rotationBy(90f).setDuration(300).start()
}
ऊंचाई और टकराव के व्यवहार को कॉन्फ़िगर करना
MarkerView
को वर्टिकल तरीके से पोज़िशन करने के तरीके और मैप के लेबल या
मार्कर के ओवरलैप होने पर, उसके साथ इंटरैक्ट करने के तरीके को पसंद के मुताबिक बनाया जा सकता है:
- ऊंचाई का मोड: कॉल करें
setAltitudeModeMarkerViewOptionsपरAltitudeModeकॉन्स्टैंट के साथ. डिफ़ॉल्ट रूप से,MarkerViewOptionsइस्तेमाल करता हैAltitudeMode.CLAMP_TO_GROUND. - टकराव का व्यवहार:
setCollisionBehaviorकोCollisionBehaviorकॉन्स्टैंट (डिफ़ॉल्ट रूप सेCollisionBehavior.REQUIRED) के साथ कॉल करें. साथ ही, मार्कर के टकराने पर, डिसप्ले की प्राथमिकता तय करने के लिए,setCollisionPriorityका इस्तेमाल करें.
सुलभता और मार्कर हटाना
कस्टम Android View पर, सुलभता की प्रॉपर्टी कॉन्फ़िगर करने की ज़िम्मेदारी आपकी होती है. जैसे,
contentDescription जिसे
setContent को उपलब्ध कराया गया है.
मैप से
MarkerView
हटाने के लिए, कॉल करें
remove:
markerView?.remove()