চিহ্নিতকারী

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

মার্কার মানচিত্রে একক অবস্থান নির্দেশ করে। আপনি ডিফল্ট রঙ পরিবর্তন করে বা একটি কাস্টম চিত্রের সাথে মার্কার আইকন প্রতিস্থাপন করে আপনার মার্কারগুলি কাস্টমাইজ করতে পারেন৷ তথ্য উইন্ডোগুলি একটি মার্কারকে অতিরিক্ত প্রসঙ্গ প্রদান করতে পারে।

কোড নমুনা

GitHub এ ApiDemos সংগ্রহস্থলে একটি নমুনা রয়েছে যা বিভিন্ন মার্কার বৈশিষ্ট্য প্রদর্শন করে:

কোটলিন

জাভা

ভূমিকা

চিহ্নিতকারীরা মানচিত্রে অবস্থান চিহ্নিত করে। ডিফল্ট মার্কারটি একটি আদর্শ আইকন ব্যবহার করে, যা Google মানচিত্রের চেহারা এবং অনুভূতিতে সাধারণ। API এর মাধ্যমে আইকনের রঙ, চিত্র বা অ্যাঙ্কর পয়েন্ট পরিবর্তন করা সম্ভব। মার্কারগুলি হল Marker টাইপের বস্তু, এবং GoogleMap.addMarker(markerOptions) পদ্ধতিতে মানচিত্রে যোগ করা হয়।

মার্কারগুলি ইন্টারেক্টিভ হওয়ার জন্য ডিজাইন করা হয়েছে। তারা ডিফল্টরূপে click ইভেন্টগুলি গ্রহণ করে এবং প্রায়শই ইভেন্ট শ্রোতাদের সাথে তথ্য উইন্ডো আনতে ব্যবহৃত হয়। একটি মার্কারের draggable সম্পত্তি true সেট করা ব্যবহারকারীকে মার্কার অবস্থান পরিবর্তন করতে দেয়। মার্কার সরানোর ক্ষমতা সক্রিয় করতে একটি দীর্ঘ প্রেস ব্যবহার করুন।

ডিফল্টরূপে, যখন একজন ব্যবহারকারী একটি মার্কারকে ট্যাপ করেন, তখন মানচিত্রের টুলবারটি মানচিত্রের নীচে ডানদিকে প্রদর্শিত হয়, ব্যবহারকারীকে Google Maps মোবাইল অ্যাপে দ্রুত অ্যাক্সেস দেয়। আপনি টুলবার নিষ্ক্রিয় করতে পারেন. আরও তথ্যের জন্য, নিয়ন্ত্রণের নির্দেশিকা দেখুন।

মার্কার দিয়ে শুরু করা

Maps Live-এর এই পর্বটি Android-এর জন্য Maps SDK ব্যবহার করে আপনার মানচিত্রে মার্কার যোগ করার মৌলিক বিষয়গুলি কভার করে৷

একটি মার্কার যোগ করুন

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি মানচিত্রে একটি মার্কার যোগ করতে হয়। মার্কারটি স্থানাঙ্ক -33.852,151.211 (সিডনি, অস্ট্রেলিয়া) এ তৈরি করা হয় এবং ক্লিক করার সময় একটি তথ্য উইন্ডোতে 'মার্কার ইন সিডনি' স্ট্রিং প্রদর্শন করে।

কোটলিন



override fun onMapReady(googleMap: GoogleMap) {
    // Add a marker in Sydney, Australia,
    // and move the map's camera to the same location.
    val sydney = LatLng(-33.852, 151.211)
    googleMap.addMarker(
        MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney")
    )
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}

      

জাভা


@Override
public void onMapReady(GoogleMap googleMap) {
    // Add a marker in Sydney, Australia,
    // and move the map's camera to the same location.
    LatLng sydney = new LatLng(-33.852, 151.211);
    googleMap.addMarker(new MarkerOptions()
        .position(sydney)
        .title("Marker in Sydney"));
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}

      

একটি মার্কার সম্পর্কে অতিরিক্ত তথ্য প্রদর্শন করুন

একটি সাধারণ প্রয়োজন হল একটি স্থান বা অবস্থান সম্পর্কে অতিরিক্ত তথ্য দেখানো যখন ব্যবহারকারী মানচিত্রে একটি মার্কার ট্যাপ করে। তথ্য উইন্ডোজ গাইড দেখুন.

একটি মার্কার সঙ্গে তথ্য সংযুক্ত করুন

আপনি Marker.setTag() ব্যবহার করে একটি মার্কার সহ একটি নির্বিচারে ডেটা অবজেক্ট সংরক্ষণ করতে পারেন এবং Marker.getTag() ব্যবহার করে ডেটা অবজেক্ট পুনরুদ্ধার করতে পারেন। নীচের নমুনাটি দেখায় কিভাবে আপনি ট্যাগ ব্যবহার করে একটি মার্কার কতবার ক্লিক করা হয়েছে তা গণনা করতে পারেন:

কোটলিন



/**
 * A demo class that stores and retrieves data objects with each marker.
 */
class MarkerDemoActivity : AppCompatActivity(),
    OnMarkerClickListener, OnMapReadyCallback {
    private val PERTH = LatLng(-31.952854, 115.857342)
    private val SYDNEY = LatLng(-33.87365, 151.20689)
    private val BRISBANE = LatLng(-27.47093, 153.0235)

    private var markerPerth: Marker? = null
    private var markerSydney: Marker? = null
    private var markerBrisbane: Marker? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_markers)
        val mapFragment =
            supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
        mapFragment!!.getMapAsync(this)
    }

    /** Called when the map is ready.  */
    override fun onMapReady(map: GoogleMap) {
        // Add some markers to the map, and add a data object to each marker.
        markerPerth = map.addMarker(
            MarkerOptions()
                .position(PERTH)
                .title("Perth")
        )
        markerPerth?.tag = 0
        markerSydney = map.addMarker(
            MarkerOptions()
                .position(SYDNEY)
                .title("Sydney")
        )
        markerSydney?.tag = 0
        markerBrisbane = map.addMarker(
            MarkerOptions()
                .position(BRISBANE)
                .title("Brisbane")
        )
        markerBrisbane?.tag = 0

        // Set a listener for marker click.
        map.setOnMarkerClickListener(this)
    }

    /** Called when the user clicks a marker.  */
    override fun onMarkerClick(marker: Marker): Boolean {

        // Retrieve the data from the marker.
        val clickCount = marker.tag as? Int

        // Check if a click count was set, then display the click count.
        clickCount?.let {
            val newClickCount = it + 1
            marker.tag = newClickCount
            Toast.makeText(
                this,
                "${marker.title} has been clicked $newClickCount times.",
                Toast.LENGTH_SHORT
            ).show()
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false
    }
}

      

জাভা


/**
 * A demo class that stores and retrieves data objects with each marker.
 */
public class MarkerDemoActivity extends AppCompatActivity implements
    GoogleMap.OnMarkerClickListener,
    OnMapReadyCallback {

    private final LatLng PERTH = new LatLng(-31.952854, 115.857342);
    private final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);
    private final LatLng BRISBANE = new LatLng(-27.47093, 153.0235);

    private Marker markerPerth;
    private Marker markerSydney;
    private Marker markerBrisbane;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_markers);
        SupportMapFragment mapFragment =
            (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /** Called when the map is ready. */
    @Override
    public void onMapReady(GoogleMap map) {
        // Add some markers to the map, and add a data object to each marker.
        markerPerth = map.addMarker(new MarkerOptions()
            .position(PERTH)
            .title("Perth"));
        markerPerth.setTag(0);

        markerSydney = map.addMarker(new MarkerOptions()
            .position(SYDNEY)
            .title("Sydney"));
        markerSydney.setTag(0);

        markerBrisbane = map.addMarker(new MarkerOptions()
            .position(BRISBANE)
            .title("Brisbane"));
        markerBrisbane.setTag(0);

        // Set a listener for marker click.
        map.setOnMarkerClickListener(this);
    }

    /** Called when the user clicks a marker. */
    @Override
    public boolean onMarkerClick(final Marker marker) {

        // Retrieve the data from the marker.
        Integer clickCount = (Integer) marker.getTag();

        // Check if a click count was set, then display the click count.
        if (clickCount != null) {
            clickCount = clickCount + 1;
            marker.setTag(clickCount);
            Toast.makeText(this,
                marker.getTitle() +
                    " has been clicked " + clickCount + " times.",
                Toast.LENGTH_SHORT).show();
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false;
    }
}

      

মার্কারগুলির সাথে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করার জন্য যখন এটি উপযোগী হয় তখন পরিস্থিতিগুলির কিছু উদাহরণ এখানে দেওয়া হল:

  • আপনার অ্যাপ্লিকেশান বিভিন্ন ধরণের মার্কারগুলির জন্য পূরণ করতে পারে এবং ব্যবহারকারী যখন সেগুলিকে ক্লিক করে তখন আপনি তাদের সাথে ভিন্নভাবে আচরণ করতে চান৷ এটি সম্পন্ন করার জন্য, আপনি ধরন নির্দেশকারী মার্কার সহ একটি String সংরক্ষণ করতে পারেন।
  • আপনি এমন একটি সিস্টেমের সাথে ইন্টারফেস করতে পারেন যার অনন্য রেকর্ড শনাক্তকারী রয়েছে, যেখানে চিহ্নিতকারীরা সেই সিস্টেমে নির্দিষ্ট রেকর্ডগুলি উপস্থাপন করে।
  • মার্কার ডেটা একটি মার্কারের z-সূচক নির্ধারণ করার সময় ব্যবহার করা অগ্রাধিকার নির্দেশ করতে পারে।

একটি মার্কার টেনে আনা যায়

আপনি একটি মার্কারকে ম্যাপে যোগ করার পর সেটির স্থান পরিবর্তন করতে পারেন যতক্ষণ না এটির draggable সম্পত্তি true সেট করা থাকে। টেনে আনা সক্ষম করতে মার্কারটিকে দীর্ঘক্ষণ টিপুন৷ আপনি যখন আপনার আঙুলটি স্ক্রীন থেকে সরিয়ে নেবেন, মার্কারটি সেই অবস্থানে থাকবে।

চিহ্নিতকারী ডিফল্টরূপে টেনে আনা যায় না। ম্যাপে যোগ করার আগে আপনাকে মার্কারটিকে স্পষ্টভাবে টেনে আনার জন্য সেট করতে হবে হয় MarkerOptions.draggable(boolean) দিয়ে, অথবা একবার ম্যাপে যোগ করার পরে Marker.setDraggable(boolean)মার্কার ড্র্যাগ ইভেন্টগুলিতে বর্ণিত হিসাবে আপনি মার্কারে টেনে আনার ঘটনাগুলি শুনতে পারেন।

নীচের স্নিপেটটি অস্ট্রেলিয়ার পার্থে একটি টেনে আনাযোগ্য মার্কার যোগ করে।

কোটলিন



val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .draggable(true)
)

      

জাভা


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .draggable(true));

      

একটি মার্কার কাস্টমাইজ করুন

এই ভিডিওটি মানচিত্রে অবস্থানগুলি কল্পনা করতে মার্কার ব্যবহার করার উপায়গুলি দেখায়৷

চিহ্নিতকারী ডিফল্ট আইকনের জায়গায় দেখানোর জন্য একটি কাস্টম চিত্র সংজ্ঞায়িত করতে পারে। একটি আইকন সংজ্ঞায়িত করার জন্য চিহ্নিতকারীর চাক্ষুষ আচরণকে প্রভাবিত করে এমন বেশ কয়েকটি বৈশিষ্ট্য সেট করা জড়িত।

চিহ্নিতকারী নিম্নলিখিত বৈশিষ্ট্যগুলির মাধ্যমে কাস্টমাইজেশন সমর্থন করে:

অবস্থান (প্রয়োজনীয়)
মানচিত্রে চিহ্নিতকারীর অবস্থানের জন্য LatLng মান। এটি একটি Marker বস্তুর জন্য একমাত্র প্রয়োজনীয় সম্পত্তি।
নোঙ্গর
চিত্রের বিন্দু যা মার্কারের LatLng অবস্থানে স্থাপন করা হবে। এটি চিত্রের নীচের মাঝখানে ডিফল্ট।
আলফা
চিহ্নিতকারীর অস্বচ্ছতা সেট করে। ডিফল্ট 1.0.
শিরোনাম
একটি স্ট্রিং যা তথ্য উইন্ডোতে প্রদর্শিত হয় যখন ব্যবহারকারী মার্কারটি ট্যাপ করে।
স্নিপেট
শিরোনামের নীচে প্রদর্শিত অতিরিক্ত পাঠ্য।
আইকন
একটি বিটম্যাপ যা ডিফল্ট মার্কার চিত্রের জায়গায় প্রদর্শিত হয়।
টেনে আনা যায়
আপনি যদি ব্যবহারকারীকে মার্কার সরানোর অনুমতি দিতে চান তাহলে true সেট করুন। ডিফল্ট থেকে false
দৃশ্যমান
মার্কারটিকে অদৃশ্য করতে false সেট করুন৷ ডিফল্ট থেকে true
ফ্ল্যাট বা বিলবোর্ড অভিযোজন
ডিফল্টরূপে, মার্কারগুলি একটি বিলবোর্ড অভিযোজন ব্যবহার করে, যার অর্থ তারা মানচিত্রের পৃষ্ঠের বিপরীতে নয় বরং ডিভাইসের স্ক্রিনের বিপরীতে আঁকা হয়। মানচিত্রটি ঘোরানো, কাত করা বা জুম করা মার্কারটির অবস্থান পরিবর্তন করে না। আপনি পৃথিবীর বিরুদ্ধে সমতল হতে একটি মার্কারের অভিযোজন সেট করতে পারেন। মানচিত্রটি ঘোরানো হলে ফ্ল্যাট মার্কারগুলি ঘোরে এবং মানচিত্রটি কাত হলে দৃষ্টিভঙ্গি পরিবর্তন করে৷ বিলবোর্ড মার্কারগুলির মতো, মানচিত্রটি জুম ইন বা আউট করার সময় ফ্ল্যাট মার্কারগুলি তাদের আকার ধরে রাখে।
ঘূর্ণন
মার্কারের অভিযোজন, ডিগ্রী ঘড়ির কাঁটার দিকে নির্দিষ্ট করা। চিহ্নিতকারী সমতল হলে ডিফল্ট অবস্থান পরিবর্তিত হয়। একটি সমতল চিহ্নিতকারীর ডিফল্ট অবস্থান হল উত্তর সারিবদ্ধ। যখন মার্কার সমতল হয় না, তখন ডিফল্ট অবস্থান উপরে নির্দেশ করে এবং ঘূর্ণন এমন হয় যে মার্কারটি সর্বদা ক্যামেরার মুখোমুখি হয়।

নীচের স্নিপেটটি ডিফল্ট আইকন সহ একটি সাধারণ মার্কার তৈরি করে।

কোটলিন



val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
)

      

জাভা


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation));

      

মার্কার রঙ কাস্টমাইজ করুন

আইকন() পদ্ধতিতে একটি BitmapDescriptor অবজেক্ট পাস করে ডিফল্ট মার্কার ছবির রঙ কাস্টমাইজ করা সম্ভব। আপনি BitmapDescriptorFactory অবজেক্টে পূর্বনির্ধারিত রঙের একটি সেট ব্যবহার করতে পারেন, অথবা BitmapDescriptorFactory.defaultMarker(float hue) পদ্ধতিতে একটি কাস্টম মার্কার রঙ সেট করতে পারেন। রঙ হল 0 এবং 360 এর মধ্যে একটি মান, যা একটি রঙের চাকার বিন্দুকে প্রতিনিধিত্ব করে।

কোটলিন



val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
)

      

জাভা


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));

      

মার্কার অস্বচ্ছতা কাস্টমাইজ করুন

আপনি MarkerOptions.alpha() পদ্ধতির মাধ্যমে একটি মার্কারের অস্বচ্ছতা নিয়ন্ত্রণ করতে পারেন। আলফা 0.0 এবং 1.0 এর মধ্যে একটি ফ্লোট হিসাবে নির্দিষ্ট করা উচিত, যেখানে 0 সম্পূর্ণ স্বচ্ছ এবং 1 সম্পূর্ণ অস্বচ্ছ।

কোটলিন



val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .alpha(0.7f)
)

      

জাভা


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(new MarkerOptions()
    .position(melbourneLocation)
    .alpha(0.7f));

      

মার্কার ইমেজ কাস্টমাইজ করুন

আপনি একটি কাস্টম মার্কার ইমেজ দিয়ে ডিফল্ট মার্কার ইমেজ প্রতিস্থাপন করতে পারেন, প্রায়ই একটি আইকন বলা হয়। কাস্টম আইকনগুলি সর্বদা একটি BitmapDescriptor হিসাবে সেট করা হয়, এবং BitmapDescriptorFactory ক্লাসের একটি পদ্ধতি ব্যবহার করে সংজ্ঞায়িত করা হয়।

fromAsset(String assetName)
সম্পদ ডিরেক্টরিতে একটি বিটম্যাপ চিত্রের নাম ব্যবহার করে একটি কাস্টম মার্কার তৈরি করে।
fromBitmap(Bitmap image)
একটি বিটম্যাপ ইমেজ থেকে একটি কাস্টম মার্কার তৈরি করে।
fromFile(String fileName)
অভ্যন্তরীণ সঞ্চয়স্থানে অবস্থিত একটি বিটম্যাপ চিত্র ফাইলের নাম ব্যবহার করে একটি কাস্টম আইকন তৈরি করে৷
fromPath(String absolutePath)
একটি বিটম্যাপ চিত্রের একটি পরম ফাইল পাথ থেকে একটি কাস্টম মার্কার তৈরি করে।
fromResource(int resourceId)
একটি বিটম্যাপ ছবির রিসোর্স আইডি ব্যবহার করে একটি কাস্টম মার্কার তৈরি করে।

নীচের স্নিপেটটি একটি কাস্টম আইকন সহ একটি মার্কার তৈরি করে।

কোটলিন



val melbourneLocation = LatLng(-37.813, 144.962)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLocation)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))
)

      

জাভা


final LatLng melbourneLocation = new LatLng(-37.813, 144.962);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLocation)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

      

একটি মার্কার সমতল করুন

মার্কার আইকন সাধারণত পর্দার সাপেক্ষে আঁকা হয়; মানচিত্রটি ঘোরানো, কাত করা বা জুম করা মার্কারটির অবস্থান পরিবর্তন করবে না। আপনি পৃথিবীর বিরুদ্ধে সমতল হতে একটি মার্কারের অভিযোজন সেট করতে পারেন। এইভাবে অভিমুখী চিহ্নিত মার্কারগুলি যখন মানচিত্রটি ঘোরানো হয় তখন ঘুরবে এবং মানচিত্রটি কাত হলে দৃষ্টিভঙ্গি পরিবর্তন করবে৷ মানচিত্র জুম ইন বা আউট করা হলে ফ্ল্যাট মার্কারগুলি তাদের আকার বজায় রাখবে।

মার্কারের স্থিতিবিন্যাস পরিবর্তন করতে, চিহ্নিতকারীর flat সম্পত্তি true সেট করুন।

কোটলিন



val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .flat(true)
)

      

জাভা


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .flat(true));

      

একটি মার্কার ঘোরান

আপনি Marker দিয়ে একটি মার্কারকে তার অ্যাঙ্কর পয়েন্টের চারপাশে ঘোরাতে পারেন। setRotation() পদ্ধতি। ঘূর্ণন ডিফল্ট অবস্থান থেকে ঘড়ির কাঁটার দিকে ডিগ্রী পরিমাপ করা হয়. মার্কারটি মানচিত্রে সমতল হলে, ডিফল্ট অবস্থানটি উত্তর। যখন মার্কার সমতল হয় না, তখন ডিফল্ট অবস্থান উপরে নির্দেশ করে এবং ঘূর্ণন এমন হয় যে মার্কারটি সর্বদা ক্যামেরার মুখোমুখি হয়।

নীচের উদাহরণটি মার্কারটিকে 90° ঘোরায়। নোঙ্গর বিন্দুকে 0.5,0.5 তে সেট করার ফলে মার্কারটিকে তার কেন্দ্রের চারপাশে ঘোরানো হয়, তার ভিত্তির পরিবর্তে।

কোটলিন



val perthLocation = LatLng(-31.90, 115.86)
val perth = map.addMarker(
    MarkerOptions()
        .position(perthLocation)
        .anchor(0.5f, 0.5f)
        .rotation(90.0f)
)

      

জাভা


final LatLng perthLocation = new LatLng(-31.90, 115.86);
Marker perth = map.addMarker(
    new MarkerOptions()
        .position(perthLocation)
        .anchor(0.5f,0.5f)
        .rotation(90.0f));

      

চিহ্নিতকারী z-সূচক

z-সূচক এই মার্কারটির স্ট্যাক অর্ডার নির্দিষ্ট করে, মানচিত্রের অন্যান্য মার্কারের তুলনায়। একটি উচ্চ z-সূচক সহ একটি মার্কার নীচের z-সূচী সহ মার্কারগুলির উপরে আঁকা হয়। ডিফল্ট z-সূচক মান হল 0

MarkerOptions.zIndex() কল করে চিহ্নিতকারীর অপশন অবজেক্টে z-সূচী সেট করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

কোটলিন



map.addMarker(
    MarkerOptions()
        .position(LatLng(10.0, 10.0))
        .title("Marker z1")
        .zIndex(1.0f)
)

      

জাভা


map.addMarker(new MarkerOptions()
    .position(new LatLng(10, 10))
    .title("Marker z1")
    .zIndex(1.0f));

      

আপনি Marker.getZIndex() এ কল করে চিহ্নিতকারীর z-সূচক অ্যাক্সেস করতে পারেন, এবং আপনি Marker.setZIndex() কল করে এটি পরিবর্তন করতে পারেন।

মার্কারগুলি সর্বদা টালি স্তর এবং অন্যান্য অ-মার্কার ওভারলেগুলির উপরে আঁকা হয় (গ্রাউন্ড ওভারলে, পলিলাইন, বহুভুজ এবং অন্যান্য আকার) অন্যান্য ওভারলেগুলির z-সূচক নির্বিশেষে। অন্যান্য ওভারলেগুলির তুলনায় মার্কারগুলিকে কার্যকরভাবে একটি পৃথক z-সূচক গ্রুপে বিবেচনা করা হয়।

নীচের ক্লিক ইভেন্টগুলিতে z-সূচকের প্রভাব সম্পর্কে পড়ুন।

মার্কার ইভেন্টগুলি পরিচালনা করুন

মানচিত্র API আপনাকে মার্কার ইভেন্টগুলি শুনতে এবং প্রতিক্রিয়া জানাতে দেয়৷ এই ইভেন্টগুলি শোনার জন্য, আপনাকে অবশ্যই সংশ্লিষ্ট শ্রোতাকে GoogleMap অবজেক্টে সেট করতে হবে যেখানে মার্কারগুলি রয়েছে৷ মানচিত্রের একটি চিহ্নিতকারীতে ইভেন্টটি ঘটলে, শ্রোতার কলব্যাকটি একটি প্যারামিটার হিসাবে পাস করা সংশ্লিষ্ট Marker বস্তুর সাথে আহ্বান করা হবে। Marker অবজেক্টের সাথে আপনার নিজের রেফারেন্সের সাথে এই Marker অবজেক্টের তুলনা করতে, আপনাকে অবশ্যই equals() ব্যবহার করতে হবে এবং == নয়।

আপনি নিম্নলিখিত ঘটনা শুনতে পারেন:

মার্কার ক্লিক ইভেন্ট

আপনি মার্কারে ক্লিক ইভেন্ট শুনতে একটি OnMarkerClickListener ব্যবহার করতে পারেন। এই শ্রোতাকে মানচিত্রে সেট করতে, GoogleMap.setOnMarkerClickListener(OnMarkerClickListener) কল করুন। যখন একজন ব্যবহারকারী একটি মার্কারে ক্লিক করেন, onMarkerClick(Marker) কল করা হবে এবং মার্কারটিকে একটি যুক্তি হিসাবে পাস করা হবে। এই পদ্ধতিটি একটি বুলিয়ান প্রদান করে যা নির্দেশ করে যে আপনি ইভেন্টটি গ্রহণ করেছেন কিনা (অর্থাৎ, আপনি ডিফল্ট আচরণকে দমন করতে চান)। যদি এটি false ফেরত দেয়, তাহলে আপনার কাস্টম আচরণ ছাড়াও ডিফল্ট আচরণ ঘটবে। একটি মার্কার ক্লিক ইভেন্টের জন্য ডিফল্ট আচরণ হল তার তথ্য উইন্ডো (যদি উপলব্ধ থাকে) দেখানো এবং ক্যামেরাটিকে এমনভাবে সরানো যাতে মার্কারটি মানচিত্রে কেন্দ্রীভূত হয়।

ক্লিক ইভেন্টে জেড-ইনডেক্সের প্রভাব:

  • যখন একজন ব্যবহারকারী মার্কারগুলির একটি ক্লাস্টারে ক্লিক করেন, তখন সর্বোচ্চ z-সূচক সহ মার্কারটির জন্য ক্লিক ইভেন্টটি ট্রিগার হয়৷
  • প্রতি ক্লিকে সর্বাধিক একটি ইভেন্ট ট্রিগার হয়। অন্য কথায়, নিচের z-সূচক মান সহ মার্কার বা অন্যান্য ওভারলেতে ক্লিক পাঠানো হয় না।
  • মার্কারগুলির একটি ক্লাস্টারে ক্লিক করার ফলে পরবর্তী ক্লিকগুলি ক্লাস্টারের মধ্যে চক্রাকারে চলে যায়, প্রতিটিকে পালাক্রমে নির্বাচন করে। চক্রের ক্রম প্রথমে z-সূচীকে অগ্রাধিকার দেয়, তারপরে ক্লিক পয়েন্টের প্রক্সিমিটি।
  • যদি ব্যবহারকারী ক্লাস্টারের প্রক্সিমিটির বাইরে ক্লিক করে, তাহলে এপিআই ক্লাস্টারটিকে পুনরায় গণনা করে এবং ক্লিক চক্রের অবস্থা পুনরায় সেট করে যাতে এটি শুরু থেকে শুরু হয়।
  • চক্র পুনরায় আরম্ভ করার আগে ক্লিক ইভেন্ট মার্কার ক্লাস্টারের মাধ্যমে অন্যান্য আকার এবং ওভারলেতে পড়ে।
  • অন্যান্য ওভারলে বা আকৃতির (পলিলাইন, বহুভুজ, বৃত্ত, এবং/অথবা গ্রাউন্ড ওভারলে) তুলনায় মার্কারগুলিকে কার্যকরভাবে একটি পৃথক z-সূচক গ্রুপে বিবেচনা করা হয়, অন্য ওভারলেগুলির z-সূচক নির্বিশেষে। যদি একাধিক মার্কার, ওভারলে বা আকার একে অপরের উপরে ওভারলেড করা হয়, তাহলে ক্লিক ইভেন্টটি প্রথমে মার্কারগুলির ক্লাস্টারের মাধ্যমে সাইকেল করা হয়, তারপর তাদের z-সূচক মানের উপর ভিত্তি করে অন্যান্য ক্লিকযোগ্য ওভারলে বা আকারগুলির জন্য ট্রিগার করা হয়।

মার্কার ড্র্যাগ ইভেন্ট

আপনি একটি মার্কারে ড্র্যাগ ইভেন্টগুলি শুনতে একটি OnMarkerDragListener ব্যবহার করতে পারেন৷ এই শ্রোতাকে মানচিত্রে সেট করতে, GoogleMap.setOnMarkerDragListener এ কল করুন। একটি মার্কার টেনে আনতে, একজন ব্যবহারকারীকে অবশ্যই মার্কারটিতে দীর্ঘক্ষণ চাপ দিতে হবে। ব্যবহারকারী যখন তাদের আঙুলটি স্ক্রীন থেকে সরিয়ে নেয়, তখন মার্কারটি সেই অবস্থানে থাকবে। যখন একটি মার্কার টেনে আনা হয়, তখন প্রাথমিকভাবে onMarkerDragStart(Marker) বলা হয়। মার্কারটি টেনে আনার সময়, onMarkerDrag(Marker) ক্রমাগত কল করা হয়। ড্র্যাগের শেষে onMarkerDragEnd(Marker) বলা হয়। আপনি যে কোন সময় Marker.getPosition() কল করে মার্কার অবস্থান জানতে পারেন।