कस्टम व्यू की मदद से मार्कर बनाना

न्यूयॉर्क शहर की 3D इमेज, जिसमें एम्पायर स्टेट बिल्डिंग दिख रही है. इसके ऊपर, तीन कस्टम डिजिटल मार्कर फ़्लोट कर रहे हैं. इनमें से एक मार्कर, कार्टून गोरिल्ला है

कस्टम 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 को वर्टिकल तरीके से पोज़िशन करने के तरीके और मैप के लेबल या मार्कर के ओवरलैप होने पर, उसके साथ इंटरैक्ट करने के तरीके को पसंद के मुताबिक बनाया जा सकता है:

सुलभता और मार्कर हटाना

कस्टम Android View पर, सुलभता की प्रॉपर्टी कॉन्फ़िगर करने की ज़िम्मेदारी आपकी होती है. जैसे, contentDescription जिसे setContent को उपलब्ध कराया गया है.

मैप से MarkerView हटाने के लिए, कॉल करें remove:

markerView?.remove()