চিহ্নিতকারী

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

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

কোড নমুনা

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() কল করে মার্কার অবস্থান জানতে পারেন।

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

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

কোড নমুনা

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() কল করে মার্কার অবস্থান জানতে পারেন।

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

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

কোড নমুনা

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));

      

মার্কার জেড-ইনডেক্স

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

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

কোটলিন



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() কল করে মার্কার জেড-সূচক অ্যাক্সেস করতে পারেন এবং আপনি এটি Marker.setZIndex() কল করে এটি পরিবর্তন করতে পারেন।

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

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

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

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

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

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

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

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

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

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

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

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

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

কোড নমুনা

গিটহাবের এপিডেমোস সংগ্রহস্থলে এমন একটি নমুনা অন্তর্ভুক্ত রয়েছে যা বিভিন্ন চিহ্নিতকারী বৈশিষ্ট্যগুলি প্রদর্শন করে:

কোটলিন

জাভা

ভূমিকা

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

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

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

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

মানচিত্র লাইভের এই পর্বটি অ্যান্ড্রয়েডের জন্য মানচিত্র এসডিকে ব্যবহার করে আপনার মানচিত্রে চিহ্নিতকারী যুক্ত করার মূল বিষয়গুলি কভার করে।

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

নিম্নলিখিত উদাহরণটি কীভাবে কোনও মানচিত্রে মার্কার যুক্ত করতে হয় তা প্রদর্শন করে। চিহ্নিতকারীটি স্থানাঙ্ক -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 সঞ্চয় করতে পারেন।
  • আপনি এমন একটি সিস্টেমের সাথে ইন্টারফেস করতে পারেন যা অনন্য রেকর্ড শনাক্তকারী রয়েছে, যেখানে চিহ্নিতকারীরা সেই সিস্টেমে নির্দিষ্ট রেকর্ড উপস্থাপন করে।
  • মার্কার ডেটা কোনও চিহ্নিতকারীটির জেড-সূচক সিদ্ধান্ত নেওয়ার সময় ব্যবহার করার জন্য একটি অগ্রাধিকার নির্দেশ করতে পারে।

একটি চিহ্নিতকারীকে ড্র্যাগযোগ্য করুন

কোনও মার্কার একবার মানচিত্রে যুক্ত হয়ে গেলে আপনি এটি পুনরায় স্থাপন করতে পারেন যতক্ষণ না এর 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 বস্তুর জন্য একমাত্র প্রয়োজনীয় সম্পত্তি।
নোঙ্গর
চিত্রের পয়েন্টটি যা চিহ্নিতকারীটির ল্যাটলং অবস্থানে স্থাপন করা হবে। এটি চিত্রের নীচে মাঝখানে ডিফল্ট হয়।
আলফা
চিহ্নিতকারীটির অস্বচ্ছতা সেট করে। ডিফল্ট 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)));

      

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

আপনি মার্কারোপশনস.এলফা () পদ্ধতি সহ একটি চিহ্নিতকারীটির অস্বচ্ছতা নিয়ন্ত্রণ করতে পারেন। আলফা 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));

      

মার্কার জেড-ইনডেক্স

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

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

কোটলিন



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() কল করে মার্কার জেড-সূচক অ্যাক্সেস করতে পারেন এবং আপনি এটি Marker.setZIndex() কল করে এটি পরিবর্তন করতে পারেন।

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

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

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

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

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

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

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

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

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

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

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