গ্রাউন্ড ওভারলে

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript

গ্রাউন্ড ওভারলে হল ছবির ওভারলে যা অক্ষাংশ/দ্রাঘিমাংশ কোঅর্ডিনেটের সাথে যুক্ত থাকে, তাই আপনি ম্যাপ টেনে আনলে বা জুম করলে সেগুলি সরে যায়।

কোডের নমুনা

GitHub-এ ApiDemos রিপোজিটরিতে একটি স্যাম্পেল আছে যা গ্রাউন্ড ওভারলে দেখায়:

ভূমিকা

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

ওভারলে যোগ করুন

GroundOverlay যোগ করতে, একটি GroundOverlayOptions অবজেক্ট তৈরি করুন যা ছবি ও পজিশন, উভয়কেই সংজ্ঞায়িত করে। আপনি চাইলে অতিরিক্ত সেটিংস নির্দিষ্ট করতে পারেন যা ম্যাপে ছবির পজিশনকে প্রভাবিত করবে। প্রয়োজনীয় বিকল্পগুলি নির্দিষ্ট করার পরে, ম্যাপে ছবি যোগ করতে GoogleMap.addGroundOverlay() মেথডে অবজেক্টটি পাস করুন। addGroundOverlay() পদ্ধতি একটি GroundOverlay অবজেক্ট রিটার্ন করে; আপনি পরে এটি পরিবর্তন করতে চাইলে এই অবজেক্টের রেফারেন্স রেখে দেওয়া উচিত।

ধাপে ধাপে:

  1. নতুন GroundOverlayOptions অবজেক্ট ইনস্ট্যান্টিয়েট করুন
  2. ছবিটি BitmapDescriptor হিসেবে উল্লেখ করুন।
  3. উপলভ্য পদ্ধতিগুলির মধ্যে থেকে যেকোনও একটি ব্যবহার করে ছবির পজিশন সেট করুন:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. transparency-এর মতো যেকোনও ঐচ্ছিক প্রপার্টি আপনার পছন্দ অনুযায়ী সেট করুন।
  5. ম্যাপে ছবি যোগ করতে GoogleMap.addGroundOverlay()-এ কল করুন।

নিচের উদাহরণে দেখানো হয়েছে যে আগে থেকে থাকা GoogleMap অবজেক্টে কীভাবে গ্রাউন্ড ওভারলে যোগ করতে হয়।

Kotlin

val newarkLatLng = LatLng(40.714086, -74.228697)
val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .position(newarkLatLng, 8600f, 6500f)
map.addGroundOverlay(newarkMap)

      

Java

LatLng newarkLatLng = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap =
        new GroundOverlayOptions()
                .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
                .position(newarkLatLng, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

      

ম্যাপে গ্রাউন্ড ওভারলে যোগ করার পরে আপনি যদি সেটি পরিবর্তন করতে বা সরাতে চান, তাহলে নিশ্চিত করুন যে আপনি GroundOverlay অবজেক্টটি ধরে রেখেছেন। আপনি এই অবজেক্টে পরিবর্তন করে পরে ওভারলে পরিবর্তন করতে পারবেন।

Kotlin

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
val imageOverlay = map.addGroundOverlay(newarkMap)

      

Java

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

      

ওভারলে সরানো

আপনি GroundOverlay.remove() পদ্ধতি ব্যবহার করে গ্রাউন্ড ওভারলে সরাতে পারবেন।

Kotlin

imageOverlay?.remove()

      

Java

imageOverlay.remove();

      

ওভারলে পরিবর্তন করা

GroundOverlay.setImage(BitmapDescriptor) পদ্ধতি ব্যবহার করে ম্যাপে গ্রাউন্ড ওভারলে ছবি যোগ করার পরে আপনি সেটি পরিবর্তন করতে পারবেন।

Kotlin

// Update the GroundOverlay with a new image of the same dimension
imageOverlay?.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))

      

Java

// Update the GroundOverlay with a new image of the same dimension
imageOverlay.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922));

      

setImage() পদ্ধতিটি বর্তমান ছবিটিকে একই ডাইমেনশনের অন্য একটি ছবি দিয়ে প্রতিস্থাপন করবে।

গ্রাউন্ড ওভারলে পজিশন করা

গ্রাউন্ড ওভারলের পজিশন নির্দিষ্ট করার দুটি উপায় আছে:

  • ওভারলেকে কেন্দ্রে রাখতে LatLng ব্যবহার করা এবং ইমেজের সাইজ নির্দিষ্ট করতে মিটারে ডাইমেনশন ব্যবহার করা।
  • ছবির উত্তর-পূর্ব ও দক্ষিণ-পশ্চিম কোণ নির্দিষ্ট করতে LatLngBounds ব্যবহার করা।

ম্যাপে যোগ করার আগে আপনাকে অবশ্যই গ্রাউন্ড ওভারলের অবস্থান নির্দিষ্ট করতে হবে।

ছবির পজিশন ঠিক করতে লোকেশন ব্যবহার করুন

আপনি ছবি যোগ করার সময় LatLng উল্লেখ করেন, যার সাথে অ্যাঙ্কর ফিক্স করা হবে এবং ওভারলের প্রস্থ (মিটারে)। anchor ডিফল্ট হিসেবে ছবির কেন্দ্রে থাকে। আপনি চাইলে ওভারলের উচ্চতা (মিটারে) দিতে পারেন। আপনি ওভারলের উচ্চতা না দিলে, ছবির অনুপাত বজায় রাখার জন্য এটি অটোমেটিক হিসাব করা হবে।

নিচের কোডটি 40.714086, -74.228697 পজিশনে একটি ছবি প্লেস করে যা ৮.৬ কিমি চওড়া এবং ৬.৫ কিমি উঁচু। ছবিটি নিচে বাঁদিকে অ্যাঙ্কর করা আছে।

Kotlin

val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .anchor(0f, 1f)
    .position(LatLng(40.714086, -74.228697), 8600f, 6500f)

      

Java

GroundOverlayOptions newarkMap =
        new GroundOverlayOptions()
                .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
                .anchor(0, 1)
                .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

      

কোনও ছবির পজিশন সেট করতে LatLngBounds ব্যবহার করুন

আপনি একটি LatLngBounds প্রদান করেন যাতে ছবিটি থাকে। LatLngBounds ছবির উত্তর-পূর্ব এবং দক্ষিণ-পশ্চিম কোণ সেট করে। ম্যাপে ছবি আঁকা হলে, সীমানার সাথে ফিট করার জন্য এটি ঘোরানো হবে। যদি বাউন্ড আসল অ্যাস্পেক্ট রেশিওর সাথে ম্যাচ না করে, তাহলে ছবিটি বিকৃত হয়ে যাবে।

নিচের কোডটি ম্যাপে একটি ছবি দেখায় যার দক্ষিণ-পশ্চিম কোণ 40.712216,-74.22655-এর সাথে এবং উত্তর-পূর্ব কোণ 40.773941, -74.12544-এর সাথে বাউন্ড করা থাকে।

Kotlin

val newarkBounds = LatLngBounds(
    LatLng(40.712216, -74.22655), // South west corner
    LatLng(40.773941, -74.12544), // North east corner
)
val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .positionFromBounds(newarkBounds)

      

Java

LatLngBounds newarkBounds =
        new LatLngBounds(
                new LatLng(40.712216, -74.22655), // South west corner
                new LatLng(40.773941, -74.12544)); // North east corner
GroundOverlayOptions newarkMap =
        new GroundOverlayOptions()
                .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
                .positionFromBounds(newarkBounds);

      

গ্রাউন্ড ওভারলের সাথে ডেটা যুক্ত করা

আপনি গ্রাউন্ড ওভারলে সহ একটি ইচ্ছামতো ডেটা অবজেক্ট স্টোর করতে GroundOverlay.setTag() কল করতে পারেন এবং GroundOverlay.getTag() ব্যবহার করে ডেটা অবজেক্ট ফিরিয়ে আনতে পারেন।

নিম্নলিখিত কোড স্যাম্পেল গ্রাউন্ড ওভারলে সহ স্ট্রিং বিবরণ স্টোর করে:

Kotlin

val sydneyGroundOverlay = map.addGroundOverlay(
    GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge))
        .position(LatLng(-33.873, 151.206), 100f)
        .clickable(true),
)
sydneyGroundOverlay?.tag = "Sydney"

      

Java

GroundOverlay sydneyGroundOverlay =
        map.addGroundOverlay(
                new GroundOverlayOptions()
                        .image(
                                BitmapDescriptorFactory.fromResource(
                                        R.drawable.harbour_bridge))
                        .position(new LatLng(-33.873, 151.206), 100)
                        .clickable(true));

sydneyGroundOverlay.setTag("Sydney");

      

গ্রাউন্ড ওভারলে সহ ডেটা স্টোর ও রিট্রিভ করার ক্ষেত্রে কিছু উদাহরণ এখানে দেওয়া হল:

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

গ্রাউন্ড ওভারলে ইভেন্ট ম্যানেজ করা

ডিফল্ট হিসেবে, গ্রাউন্ড ওভারলেতে ক্লিক করা যায় না। GroundOverlay.setClickable(boolean) কল করে আপনি ক্লিক করার সুবিধা চালু বা বন্ধ করতে পারবেন।

ক্লিক করা যায় এমন গ্রাউন্ড ওভারলেতে ক্লিক ইভেন্ট শুনতে OnGroundOverlayClickListener ব্যবহার করুন। ম্যাপে এই লিসনার সেট করতে, GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener) কল করুন। ব্যবহারকারী গ্রাউন্ড ওভারলেতে ক্লিক করলে, আপনি একটি onGroundOverlayClick(GroundOverlay) কলব্যাক পাবেন।