গ্রাউন্ড ওভারলে হল ইমেজ ওভারলে যা অক্ষাংশ/দ্রাঘিমাংশের স্থানাঙ্কের সাথে আবদ্ধ থাকে, তাই আপনি মানচিত্র টেনে বা জুম করলে সেগুলি সরে যায়।
কোড নমুনা
GitHub এ ApiDemos সংগ্রহস্থলে একটি নমুনা রয়েছে যা স্থল ওভারলে প্রদর্শন করে:
- GroundOverlayDemoActivity - Java : জাভাতে গ্রাউন্ড ওভারলে বৈশিষ্ট্য এবং শ্রোতা
- গ্রাউন্ডওভারলে ডেমোঅ্যাক্টিভিটি - কোটলিন : কোটলিনে গ্রাউন্ড ওভারলে বৈশিষ্ট্য এবং শ্রোতারা
ভূমিকা
একটি গ্রাউন্ড ওভারলে একটি চিত্র যা একটি মানচিত্রে স্থির করা হয়। মার্কারগুলির বিপরীতে, গ্রাউন্ড ওভারলেগুলি স্ক্রীনের পরিবর্তে পৃথিবীর পৃষ্ঠের বিপরীতে থাকে, তাই মানচিত্রটিকে ঘোরানো, কাত করা বা জুম করা চিত্রটির অভিযোজন পরিবর্তন করবে৷ আপনি মানচিত্রের একটি এলাকায় একটি একক চিত্র ঠিক করতে চাইলে গ্রাউন্ড ওভারলেগুলি দরকারী৷ আপনি যদি মানচিত্রের একটি বড় অংশ কভার করে এমন বিস্তৃত চিত্র যোগ করতে চান, তাহলে আপনার একটি টাইল ওভারলে বিবেচনা করা উচিত।
একটি ওভারলে যোগ করুন
একটি 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
অবজেক্টে একটি গ্রাউন্ড ওভারলে যোগ করতে হয়।
কোটলিন
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)
জাভা
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
অবজেক্টটিকে ধরে রেখেছেন। আপনি এই বস্তুতে পরিবর্তন করে পরে ওভারলে পরিবর্তন করতে পারেন।
কোটলিন
// Add an overlay to the map, retaining a handle to the GroundOverlay object. val imageOverlay = map.addGroundOverlay(newarkMap)
জাভা
// Add an overlay to the map, retaining a handle to the GroundOverlay object. GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);
একটি ওভারলে সরান
আপনি GroundOverlay.remove()
পদ্ধতির মাধ্যমে একটি গ্রাউন্ড ওভারলে অপসারণ করতে পারেন।
কোটলিন
imageOverlay?.remove()
জাভা
imageOverlay.remove();
একটি ওভারলে পরিবর্তন করুন
GroundOverlay.setImage(BitmapDescriptor)
পদ্ধতিতে মানচিত্রে যোগ করার পরে আপনি গ্রাউন্ড ওভারলে চিত্রটি পরিবর্তন করতে পারেন।
কোটলিন
// Update the GroundOverlay with a new image of the same dimension imageOverlay?.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
জাভা
// 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
অবস্থানে একটি চিত্র স্থাপন করে যা 8.6 কিমি চওড়া এবং 6.5 কিমি উচ্চ। ছবিটি নীচে বাম দিকে নোঙ্গর করা হয়েছে।
কোটলিন
val newarkMap = GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .anchor(0f, 1f) .position(LatLng(40.714086, -74.228697), 8600f, 6500f)
জাভা
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
-এ আবদ্ধ একটি চিত্র স্থাপন করে।
কোটলিন
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)
জাভা
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()
ব্যবহার করে ডেটা অবজেক্ট পুনরুদ্ধার করতে পারেন।
নিম্নলিখিত কোড নমুনা একটি গ্রাউন্ড ওভারলে সহ একটি স্ট্রিং বিবরণ সঞ্চয় করে:
কোটলিন
val sydneyGroundOverlay = map.addGroundOverlay( GroundOverlayOptions() .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge)) .position(LatLng(-33.873, 151.206), 100f) .clickable(true) ) sydneyGroundOverlay?.tag = "Sydney"
জাভা
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)
কলব্যাক পাবেন।