মাইগ্রেশন গাইড, মাইগ্রেশন গাইড, মাইগ্রেশন গাইড

v2-এর জন্য Google নেভিগেশন SDK-এ সবচেয়ে বড় যে পরিবর্তন করেছে তা হল আমরা Android-এর জন্য Maps SDK- এর সঙ্গীগুলির সাথে বেশ কয়েকটি নেভিগেশন SDK ক্লাস প্রতিস্থাপন করেছি।

সংস্করণ 2.2 অনুযায়ী, নেভিগেশন SDK হল Google Play Services Maps API-এর জন্য একটি (প্রায়) ড্রপ-ইন প্রতিস্থাপন। সমস্ত API গুলিকে com.google.android.libraries.maps-এ পুনরায় প্যাকেজ করার পরিবর্তে, সেগুলিকে Google Play পরিষেবাগুলির মতোই com.google.android.gms.maps-এ প্যাকেজ করা হয়েছে৷ এটি একটি Google Play পরিষেবার সংস্করণ এবং নেভিগেশন SDK-এর মধ্যে স্যুইচ করাকে আরও সহজ করে তোলে৷

সুবিধা

  • ভালো মেমরি ব্যবহার। আপনি যদি ন্যাভিগেশন SDK এবং Android এর জন্য Maps SDK উভয়ই ব্যবহার করেন তার চেয়ে আপনি এখন কম মেমরি এবং ব্যান্ডউইথ ব্যবহার করেন৷
  • মানচিত্র দৃশ্য মোড থেকে নেভিগেশন মোডে স্যুইচ করা এখন মসৃণ এবং কাজ করা সহজ।
  • আপনার এখন ক্যামেরার নিয়ন্ত্রণ বেশি।
  • আপনি এখন পলিলাইন এবং ওভারলে আঁকতে এবং মানচিত্রে কাস্টম শৈলী যোগ করার মতো জিনিসগুলি করতে পারেন৷

যাইহোক, রাস্তার দৃশ্য এবং লাইট মোডের মত বৈশিষ্ট্যগুলি সমর্থিত নয়৷

পূর্বশর্ত

  • ন্যাভিগেশন SDK-এর সংস্করণ 2 অ্যান্ড্রয়েড জেটপ্যাক ব্যবহার করে — লাইব্রেরি, সরঞ্জাম এবং নির্দেশিকাগুলির একটি স্যুট যা উচ্চ-মানের অ্যাপগুলি লেখা সহজ করে তোলে৷ এই পদক্ষেপের অর্থ হল AndroidX ব্যবহার করার জন্য আপনাকে সমর্থন লাইব্রেরি ব্যবহার করা থেকে আপনার অ্যাপকে স্থানান্তর করতে হবে৷ আরও তথ্যের জন্য, AndroidX এ স্থানান্তর করা দেখুন।

ধাপ 1. Android এর জন্য Maps SDK থেকে মাইগ্রেট করুন

Android এর জন্য Maps SDK-এর বেশিরভাগ কার্যকারিতা এখন নেভিগেশন SDK-এর সংস্করণ 2-এ অন্তর্ভুক্ত করা হয়েছে। কিছু বৈশিষ্ট্য সরানো হয়েছে কারণ সেগুলি নেভিগেশন প্রসঙ্গে প্রয়োজন ছিল না।

গুরুত্বপূর্ণ পার্থক্য

Android এর জন্য Maps SDK Google Play পরিষেবাতে ছিল৷
ন্যাভিগেশন SDK-এর v2 তে বান্ডিল করা Android এর জন্য Maps SDK বৈশিষ্ট্যগুলি Android এর জন্য Maps SDK-এর নতুন সংস্করণের উপর ভিত্তি করে তৈরি এবং Google Play পরিষেবাগুলিতে নেই৷ এই নতুন বৈশিষ্ট্যগুলি Google Play পরিষেবাগুলির তুলনায় একটি নতুন ইঞ্জিনে চলে এবং এতে বেশ কিছু উন্নতি রয়েছে৷ এর মানে হল ম্যাপটি আপনার অ্যাপের প্রক্রিয়ায় চলে, Google Play পরিষেবা প্রক্রিয়ায় নয়।
কিছু ক্লাসের নাম পরিবর্তন করা হয়েছে
নিম্নলিখিত সারণীতে সেই ক্লাসগুলির তালিকা করা হয়েছে যেগুলির নাম পরিবর্তন করা হয়েছে৷ এটি তাদের Android সমকক্ষের জন্য তাদের মানচিত্র SDK থেকে আলাদা করার জন্য করা হয়েছিল৷
Android ক্লাস নামের জন্য মানচিত্র SDK নেভিগেশন SDK ক্লাসের নাম
MapView.java NavigationView.java
MapFragment.java SupportNavigationFragment.java
এই ক্লাসগুলিতে পুরানো NavigationView ক্লাস এবং বর্তমান MapView ক্লাসে উপলব্ধ পদ্ধতিগুলির মিশ্রণ রয়েছে। আপনি তাদের MapView এবং MapFragment ক্লাসের মত ভাবতে পারেন, কিন্তু নেভিগেশন সমর্থন সহ।
অপসারিত বৈশিষ্ট্য
কিছু মানচিত্রের বৈশিষ্ট্যগুলি সরানো হয়েছে কারণ সেগুলি নেভিগেশন প্রসঙ্গে অর্থপূর্ণ ছিল না, বা প্রযুক্তিগত অসঙ্গতি ছিল৷ অপসারণ বৈশিষ্ট্য অন্তর্ভুক্ত:
  • রাস্তার দৃশ্য.
  • লাইট মোড, যা নেভিগেশনের জন্য অপর্যাপ্ত।
  • ক্যামেরা ফলো মোডে থাকা অবস্থায় আপনি একটি LocationProvider সেট করতে পারবেন না। এর কারণ হল নেভিগেশন RoadSnappedLocationProvider এর উপর নির্ভর করে, এবং এই প্রদানকারীতে স্যুইচ করলে নেভিগেট করার সময় সমস্যা হতে পারে।
  • ক্যামেরা ফলো মোডে থাকা অবস্থায় ন্যূনতম/সর্বোচ্চ জুম এবং LatLng বাউন্ড প্রয়োগ করার কোনো প্রভাব নেই।
  • এই অনুপস্থিত বৈশিষ্ট্যগুলি আপনার অসুবিধার কারণ হলে অনুগ্রহ করে আপনার গ্রাহক প্রতিনিধির সাথে কথা বলুন।

মাইগ্রেশন পদক্ষেপ

  1. আপনার বিল্ড (যেমন গ্রেডল) থেকে Android ইন্টিগ্রেশনের জন্য Maps SDK সরান। উভয় SDK থাকার ফলে কম্পাইল ত্রুটি হবে।
  2. NavigationView -এর দৃষ্টান্ত দিয়ে MapView এর উদাহরণ প্রতিস্থাপন করুন।
  3. NavigationSupportFragment উদাহরণ দিয়ে MapFragment এর উদাহরণ প্রতিস্থাপন করুন।

যদি আপনার অ্যাপ্লিকেশন আগে নেভিগেশন SDK ব্যবহার না করে থাকে, তাহলে আপনার মাইগ্রেশন সম্পূর্ণ হয়েছে।

ধাপ 2. নেভিগেশন SDK-এর v1.x থেকে মাইগ্রেট করুন

আপনার v1.x নেভিগেশন SDK-এর ইন্টিগ্রেশন v2-তে স্থানান্তর করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন৷

1. নতুন পদ্ধতি ব্যবহার করে মানচিত্র পান

আপনি একটি মানচিত্র পেতে উপায় পরিবর্তন হয়েছে. v2 এর আগে, আপনি একটি সিঙ্ক্রোনাস কল ব্যবহার করে মানচিত্র পেয়েছেন। এখন, আপনি একটি অ্যাসিঙ্ক্রোনাস কল ব্যবহার করবেন। নিম্নলিখিত সারণীতে মানচিত্র পাওয়ার জন্য নতুন পদ্ধতির সাথে পুরানো পদ্ধতির তালিকা রয়েছে।

পুরাতন পদ্ধতি নতুন পদ্ধতি
NavigationView.getMap() NavigationView.getMapAsync()
SupportNavigationFragment.getMap() SupportNavigationFragment.getMapAsync()

2. লাইব্রেরি স্থানান্তর করুন

নেভিগেশন SDK-এর v1.x-এ Android ক্লাসের জন্য বেশ কিছু Maps SDK-এর নিজস্ব বাস্তবায়ন রয়েছে। এই ক্লাসগুলি com.google.android.libraries.navigation প্যাকেজের অন্তর্গত।

v2-এ, এই ক্লাসগুলিকে Android বাস্তবায়নের জন্য Maps SDK দিয়ে প্রতিস্থাপিত করা হয়েছে, যা com.google.android.gms.maps.model প্যাকেজের অধীনে রয়েছে। আপনি একটি অনুসন্ধান এবং প্রতিস্থাপন সম্পাদন করে নতুন ক্লাস সংহত করতে আপনার অ্যাপ স্থানান্তর করতে পারেন।

নিম্নলিখিত সারণীতে নতুন ক্লাসের সাথে পুরানো ক্লাসের তালিকা রয়েছে।

পুরাতন ক্লাস নতুন ক্লাস
com.google.android.libraries.navigation.LatLng com.google.android.gms.maps.model.LatLng
com.google.android.libraries.navigation.LatLngBounds com.google.android.gms.maps.model.LatLngBounds
com.google.android.libraries.navigation.Marker com.google.android.gms.maps.model.Marker
com.google.android.libraries.navigation.MarkerOptions com.google.android.gms.maps.model.MarkerOptions
com.google.android.libraries.navigation.VisibleRegion com.google.android.gms.maps.model.VisibleRegion

3. বিদ্যমান API-এ পরিবর্তনগুলিকে সামঞ্জস্য করুন৷

নিম্নলিখিত সারণীতে ন্যাভিগেশন SDK-এর v2-এর জন্য Google-এর করা মূল পরিবর্তনগুলি তালিকাভুক্ত করা হয়েছে।

পদ্ধতি পরিবর্তন
NavigationApi.cleanup() সরানো হয়েছে। এই পদ্ধতিটি স্বাভাবিক অপারেশনের জন্য ব্যবহার করা হয়নি, এবং এটি অপ্রত্যাশিত আচরণের কারণ হতে পারে। আপনাকে অবশ্যই এই পদ্ধতিতে কল মুছে ফেলতে হবে।
RoadSnappedLocationProvider.requestLocationUpdates() সরানো হয়েছে। পরিবর্তে addLocationListener() ব্যবহার করুন।
RoadSnappedLocationProvider.stopRequestingLocationUpdates() সরানো হয়েছে। পরিবর্তে removeLocationListener() ব্যবহার করুন।

4. নতুন মার্কার ক্লাসে পরিবর্তন করুন

নেভিগেশন SDK-এর v2 এখন Android-এর জন্য Maps SDK-এর মতো Marker ক্লাসের একই বাস্তবায়ন ব্যবহার করে। এটি নিম্নলিখিত পরিবর্তনগুলি প্রবর্তন করে।

পদ্ধতি পরিবর্তন
addMarker(MarkerOptions markerOptions) এখন com.google.android.gms.maps.model.MarkerOptions ক্লাস ব্যবহার করে।
removeMarker(Marker marker) এই পদ্ধতি আর বিদ্যমান নেই. পরিবর্তে, মার্কার ক্লাসে এখন একটি marker.remove() পদ্ধতি রয়েছে।
removeAllMarkers() এই পদ্ধতিটি আর বিদ্যমান নেই, যদিও একটি clear() পদ্ধতি রয়েছে যা মানচিত্র থেকে সমস্ত মার্কার, পলিলাইন, বহুভুজ এবং ওভারলে সরিয়ে দেয়।

মার্কার অপশন পার্থক্য

  • ন্যাভিগেশন SDK-এর v2-এ describeContents() পদ্ধতিটি বিদ্যমান নেই। এটি আপনাকে onSaveInstanceState() কল করে ভিউ ডেটা সংরক্ষণ করার অনুমতি দিয়েছে। এখন, আপনাকে নিজের ভিউ বিশদ ট্র্যাক করতে হবে যাতে কনফিগারেশন পরিবর্তনের সময় আপনি ভিউটি পুনর্গঠন করতে পারেন।
  • পদ্ধতি navMarker#icon(BitMap) পরিবর্তিত হয়েছে mapMarker#icon(BitmapDescriptor) । এই পরিবর্তনের জন্য আপনাকে BitmapDescriptor ব্যবহার করার জন্য BitMap ব্যবহার করা থেকে স্থানান্তরিত করতে হবে।

মার্কার পদ্ধতি

আপনি এখন com.google.android.gms.maps.model প্যাকেজ থেকে Marker ক্লাস ব্যবহার করবেন। নিম্নলিখিত সারণী এই নতুন Marker শ্রেণী ব্যবহার করার পার্থক্য তালিকা.

পদ্ধতি পরিবর্তন
getAnchorU() আর বিদ্যমান নেই.
getAnchorV() আর বিদ্যমান নেই.
getIcon() আর বিদ্যমান নেই.
আপনাকে অবশ্যই আইকনের একটি রেফারেন্স বজায় রাখতে হবে, কনফিগারেশন পরিবর্তনের পরে ব্যবহারের জন্য, যখন আপনাকে মানচিত্রের অবস্থা পুনরায় তৈরি করতে হবে।
getPosition() এখনও বিদ্যমান.
getTitle() এখনও বিদ্যমান.

5. ক্যামেরা নিয়ন্ত্রণ

নেভিগেশন SDK-এর v1.x-এ প্রদত্ত ক্যামেরা নিয়ন্ত্রণ তুলনামূলকভাবে সীমিত ছিল। ন্যাভিগেশন SDK-এর সংস্করণ 2 এখন Android এর জন্য Maps SDK দ্বারা ব্যবহৃত একই ক্যামেরা মডেল ব্যবহার করে, আপনি নেভিগেশন SDK-এর v1.x-এর মতো একটি ফলো মোডও পাবেন।

মূল পার্থক্য

  • com.google.android.libraries.navigation.Camera ক্লাসটি v2 এ সরানো হয়েছে।
    • Camera.showRouteOverview() NavigationView এবং SupportNavigationFragment এ সরানো হয়েছে।
    • Camera.followMyLocation() পদ্ধতিটি GoogleMap এ সরানো হয়েছে।
  • আপনি Camera.setLocation()GoogleMap.moveCamera() বা GoogleMap.animateCamera() দিয়ে কল প্রতিস্থাপন করতে পারেন।
  • setOnFollowMyLocationCallback() এবং isCameraFollowingMyLocation() অনুসরণ মোড সম্পর্কে আরও তথ্য প্রদানের জন্য GoogleMap এ যোগ করা হয়েছে।

ধাপ 3. কার্যকলাপ প্রবাহ মার্জ

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