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

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

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

কোড নমুনা

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 অবজেক্টে একটি গ্রাউন্ড ওভারলে যোগ করতে হয়।

কোটলিন

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) কলব্যাক পাবেন।