কাস্টম ভিউ সহ মার্কার তৈরি করুন

নিউ ইয়র্ক সিটির 3D ছবি, যেখানে এম্পায়ার স্টেট বিল্ডিং দেখানো হয়েছে এবং এর উপরে তিনটি কাস্টম ডিজিটাল মার্কার ভাসছে, যার মধ্যে একটি কার্টুন গরিলা লেবেল করা আছে

আপনি MarkerView ব্যবহার করে 3D ম্যাপে মার্কার হিসেবে কাস্টম Android View হায়ারার্কি রেন্ডার করতে পারবেন। কাস্টম ভিউ মার্কার আপনাকে ভৌগোলিক কোঅর্ডিনেটে অ্যাঙ্কর করা সমৃদ্ধ UI লেআউট, ইন্ট্যার‍্যাক্টিভ উইজেট এবং ভিউ অ্যানিমেশন দেখাতে দেয়।

কাস্টম ভিউ মার্কার যোগ করুন

আপনার ম্যাপে কাস্টম ভিউ মার্কার যোগ করতে, একটি 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 (অথবা setPinConfiguration-এর মাধ্যমে আগে থেকে থাকা ইনস্ট্যান্স আপডেট করে) সহ PinView তৈরি করতে হবে এবং সেটি 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 উল্লম্বভাবে কীভাবে পজিশন করা হয় এবং ওভারল্যাপ করা ম্যাপ লেবেল বা মার্কারের সাথে কীভাবে ইন্টার‍্যাক্ট করে তা আপনি কাস্টমাইজ করতে পারবেন:

অ্যাক্সেসিবিলিটি ও সরিয়ে দেওয়া

setContent-কে সরবরাহ করা কাস্টম Android View-এ অ্যাক্সেসিবিলিটি প্রপার্টি—যেমন contentDescription—কনফিগার করার দায়িত্ব আপনার।

ম্যাপ থেকে MarkerView সরিয়ে দিতে, remove-এ কল করুন:

markerView?.remove()