
গ্রাউন্ড ওভারলে হল ছবির ওভারলে যা অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্কের সাথে যুক্ত, তাই আপনি ম্যাপ টেনে আনলে বা জুম করলে সেগুলি সরে যায়।
কোডের নমুনা
GitHub-এ ApiDemos রিপোজিটরি-তে একটি নমুনা রয়েছে যা গ্রাউন্ড ওভারলে দেখায়:
- GroundOverlayDemoActivity - Java: Java-তে গ্রাউন্ড ওভারলে ফিচার ও লিসনার
- GroundOverlayDemoActivity - Kotlin: Kotlin-এ গ্রাউন্ড ওভারলে ফিচার ও লিসেনার
ভূমিকা
গ্রাউন্ড ওভারলে হল এমন একটি ছবি যা ম্যাপে ফিক্স করা থাকে। মার্কারের মতো নয়, গ্রাউন্ড ওভারলে স্ক্রিনের পরিবর্তে পৃথিবীর পৃষ্ঠের সাথে ওরিয়েন্টেড হয়, তাই ম্যাপ রোটেট, টিল্ট বা জুম করলে ছবির ওরিয়েন্টেশন পরিবর্তন হয়ে যাবে। ম্যাপের কোনও একটি জায়গায় একটি ছবি ফিক্স করতে চাইলে গ্রাউন্ড ওভারলে ব্যবহার করা হয়। আপনি যদি এমন ছবি যোগ করতে চান যা ম্যাপের একটি বড় অংশ জুড়ে রয়েছে, তাহলে আপনাকে টাইলের ওভারলে বিবেচনা করতে হবে।
ওভারলে যোগ করুন
GroundOverlay যোগ করতে, একটি
GroundOverlayOptions অবজেক্ট তৈরি করুন যা ছবি এবং অবস্থান
উভয়কেই সংজ্ঞায়িত করে। আপনি চাইলে অতিরিক্ত সেটিংস উল্লেখ করতে পারেন যা
ম্যাপে ছবির পজিশনিংকে প্রভাবিত করবে। প্রয়োজনীয় বিকল্পগুলি
নির্ধারণ করার পরে, ম্যাপে ছবি যোগ করতে GoogleMap.addGroundOverlay()
মেথডে অবজেক্টটি পাস করুন। addGroundOverlay() পদ্ধতি একটি
GroundOverlay অবজেক্ট রিটার্ন করে; আপনি পরে এটি পরিবর্তন করতে চাইলে,
এই অবজেক্টের একটি রেফারেন্স রেখে দেওয়া উচিত।
ধাপে ধাপে:
- নতুন
GroundOverlayOptionsঅবজেক্ট ইনস্ট্যানশিয়েট করা - ছবিটি
BitmapDescriptorহিসেবে উল্লেখ করুন। - উপলভ্য পদ্ধতিগুলির মধ্যে থেকে যেকোনও একটি ব্যবহার করে ছবির পজিশন সেট করুন:
position(LatLng location, float width, float height)position(LatLng location, float width)positionFromBounds(LatLngBounds bounds)
transparency-এর মতো যেকোনও ঐচ্ছিক প্রপার্টি আপনার পছন্দ অনুযায়ী সেট করুন।- ম্যাপে ছবি যোগ করতে
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) imageOverlay?.let { val isClickable = it.isClickable val isVisible = it.isVisible val bearing = it.bearing val transparency = it.transparency val zIndex = it.zIndex val position = it.position val width = it.width val height = it.height }
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 উল্লেখ করেন, যেখানে অ্যাঙ্কর ফিক্স করা হবে
এবং ওভারলের প্রস্থ (মিটারে)। The
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) কলব্যাক পাবেন।