Android এর জন্য Places SDK স্থানের নাম এবং ঠিকানা, অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট ভৌগলিক অবস্থান, স্থানের ধরন (যেমন নাইট ক্লাব, পোষা প্রাণীর দোকান, যাদুঘর) এবং আরও অনেক কিছু সহ স্থান সম্পর্কে সমৃদ্ধ তথ্য সহ আপনার অ্যাপকে প্রদান করে৷ একটি নির্দিষ্ট স্থানের জন্য এই তথ্য অ্যাক্সেস করতে, আপনি স্থান আইডি ব্যবহার করতে পারেন, একটি স্থিতিশীল শনাক্তকারী যা একটি স্থানকে অনন্যভাবে সনাক্ত করে।
স্থান বিবরণ
Place
বস্তু একটি নির্দিষ্ট স্থান সম্পর্কে তথ্য প্রদান করে। আপনি নিম্নলিখিত উপায়ে একটি Place
বস্তুকে ধরে রাখতে পারেন:
-
PlacesClient.fetchPlace()
কল করুন – আইডি দ্বারা একটি স্থান পাওয়ার নির্দেশিকা দেখুন। -
PlacesClient.findCurrentPlace()
-কে কল করুন - বর্তমান স্থানটি পাওয়ার জন্য গাইডটি দেখুন।
আপনি যখন একটি স্থানের অনুরোধ করেন, তখন আপনাকে অবশ্যই নির্দিষ্ট করতে হবে কোন স্থানের ডেটা ফেরত দিতে হবে৷ এটি করার জন্য, স্থানের একটি তালিকা পাস করুন। এই তালিকাটি একটি গুরুত্বপূর্ণ বিবেচনা কারণ এটি প্রতিটি অনুরোধের খরচকে প্রভাবিত করে।
যেহেতু স্থানের ডেটা ফলাফলগুলি খালি হতে পারে না, শুধুমাত্র ডেটা সহ স্থানের ফলাফলগুলি ফেরত দেওয়া হয় (উদাহরণস্বরূপ, যদি অনুরোধ করা জায়গায় কোনও ফটো না থাকে তবে photos
ক্ষেত্রটি ফলাফলে উপস্থিত থাকবে না)।
নিম্নলিখিত উদাহরণটি একটি অনুরোধ দ্বারা প্রত্যাবর্তিত ডেটা নির্দিষ্ট করতে তিনটি Place.Field মানগুলির একটি তালিকা পাস করে:
কোটলিন
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
জাভা
// Specify the fields to return. final ListplaceFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
স্থান অবজেক্ট ডেটা ক্ষেত্র অ্যাক্সেস করুন
আপনি Place
অবজেক্ট পাওয়ার পরে, অনুরোধে নির্দিষ্ট ডেটা ক্ষেত্রগুলি অ্যাক্সেস করতে অবজেক্টের পদ্ধতিগুলি ব্যবহার করুন। যদি Place
অবজেক্ট থেকে ক্ষেত্রটি অনুপস্থিত থাকে, তাহলে সম্পর্কিত পদ্ধতিটি শূন্য করে দেয়। উপলব্ধ পদ্ধতির কয়েকটি উদাহরণ নীচে দেখানো হয়েছে। সমস্ত পদ্ধতির সম্পূর্ণ তালিকার জন্য, Place
এপিআই রেফারেন্স দেখুন।
-
getAddress()
- স্থানের ঠিকানা, মানুষের পাঠযোগ্য বিন্যাসে। -
getAddressComponents()
– এই জায়গার ঠিকানা উপাদানগুলির একটিList
। এই উপাদানগুলি একটি স্থানের ঠিকানা সম্পর্কে কাঠামোগত তথ্য বের করার উদ্দেশ্যে প্রদান করা হয়, উদাহরণস্বরূপ একটি জায়গা যেখানে অবস্থিত সেই শহরটি খুঁজে বের করা। ঠিকানা বিন্যাসের জন্য এই উপাদানগুলি ব্যবহার করবেন না; পরিবর্তে,getAddress()
কল করুন, যা একটি স্থানীয় ফর্ম্যাটেড ঠিকানা প্রদান করে। -
getId()
- স্থানটির পাঠ্য শনাক্তকারী। এই পৃষ্ঠার বাকি অংশে স্থান আইডি সম্পর্কে আরও পড়ুন। -
getLatLng()
- স্থানের ভৌগলিক অবস্থান, অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট করা হয়েছে। -
getName()
- জায়গার নাম। getOpeningHours()
- জায়গাটিরOpeningHours
।OpeningHours.getWeekdayText()
কে কল করুন সপ্তাহের প্রতিটি দিনের জন্য খোলা এবং বন্ধ হওয়ার সময় উপস্থাপন করে এমন স্ট্রিংগুলির একটি তালিকা ফেরত দিতে।getWeekdayText()
দ্বারা প্রদত্ত ডেটার সমতুল্য আরও বিস্তারিত তথ্য সহperiod
অবজেক্টের একটি তালিকা ফেরত দিতেOpeningHours.getPeriods()
এ কল করুন।Place
অবজেক্টেgetCurrentOpeningHours()
পদ্ধতিও রয়েছে যা পরবর্তী সাত দিনে একটি স্থানের কর্মঘণ্টা ফেরত দেয় এবংgetSecondaryOpeningHours()
যা পরবর্তী সাত দিনে একটি স্থানের সেকেন্ডারি ঘন্টার অপারেশন প্রদান করে।isOpen()
- একটি বুলিয়ান নির্দেশ করে যে জায়গাটি বর্তমানে খোলা আছে কিনা। যদি কোন সময় নির্দিষ্ট করা না থাকে, ডিফল্ট এখন।isOpen
শুধুমাত্র যদিPlace.Field.UTC_OFFSET
এবংPlace.Field.OPENING_HOURS
উপলব্ধ থাকে তবেই ফেরত দেওয়া হবে৷ সঠিক ফলাফল নিশ্চিত করতে, আপনার আসল স্থানের অনুরোধেPlace.Field.BUSINESS_STATUS
এবংPlace.Field.UTC_OFFSET
ক্ষেত্রগুলির অনুরোধ করুন৷ যদি অনুরোধ না করা হয় তবে ধরে নেওয়া হয় যে ব্যবসাটি চালু আছে। স্থানের বিবরণ সহisOpen
কীভাবে ব্যবহার করবেন তার জন্য এই ভিডিওটি দেখুন।
কিছু সহজ উদাহরণ:
কোটলিন
val name = place.name val address = place.address val location = place.latLng
জাভা
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
3.3.0 সংস্করণে যোগ করা স্থান ডেটা অ্যাক্সেস করুন৷
Android সংস্করণ 3.3.0 এর জন্য স্থান SDK Place
নতুন ডেটা যোগ করে:
- স্থানের প্রকার : একটি স্থানের সাথে যুক্ত নতুন ধরনের মান।
- পর্যালোচনা : একটি জায়গার জন্য পাঁচটি পর্যন্ত পর্যালোচনা।
- নামের ভাষার কোড : একটি স্থানের নামের ভাষার কোড।
নিম্নলিখিত বিভাগগুলি কীভাবে এই নতুন ডেটা অ্যাক্সেস করতে হয় তা বর্ণনা করে৷
নতুন স্থানের ধরন অ্যাক্সেস করুন
প্রতিটি স্থানের সাথে যুক্ত এক বা একাধিক প্রকার মান থাকতে পারে। Android সংস্করণ 3.3.0-এর জন্য Places SDK অনেক নতুন ধরনের মান যোগ করে। সম্পূর্ণ তালিকার জন্য, প্রসারিত স্থানের ধরন দেখুন।
Android সংস্করণ 3.2.0 এবং তার আগের জন্য Places SDK-এ, আপনি স্থানের সাথে যুক্ত টাইপ মানগুলি অ্যাক্সেস করতে Place.getTypes()
পদ্ধতি ব্যবহার করেছেন৷ Place.getTypes()
Place.Types
দ্বারা সংজ্ঞায়িত enum মান হিসাবে প্রকারের একটি তালিকা প্রদান করে।
Place.getPlaceTypes()
পদ্ধতি স্ট্রিং মানগুলির তালিকা হিসাবে টাইপ মানগুলি প্রদান করে। প্রত্যাবর্তিত মানগুলি Android এর জন্য স্থান SDK-এর আপনার সংস্করণের উপর নির্ভর করে:
- Android এর জন্য SDK স্থানগুলি (নতুন) : 3.3.0 সংস্করণে যোগ করা সমস্ত স্থানের প্রকারগুলি সহ প্লেস টাইপস (নতুন) এ দেখানো টেবিল A এবং টেবিল B দ্বারা সংজ্ঞায়িত স্ট্রিংগুলি প্রদান করে৷
- Android এর জন্য স্থান SDK :
Place.Types
দ্বারা সংজ্ঞায়িত enums ফেরত দেয়, যা 3.3.0 সংস্করণে যোগ করা নতুন প্রকারগুলিকে অন্তর্ভুক্ত করে না৷
দুটি SDK সংস্করণের মধ্যে মূল পার্থক্য জানতে, আপনার SDK সংস্করণ চয়ন করুন দেখুন।
স্থান পর্যালোচনা অ্যাক্সেস
Android এর জন্য স্থান SDK (নতুন) Review
ক্লাস যোগ করে, যেটিতে একটি জায়গার রিভিউ থাকে। Place
অবজেক্টে পাঁচটি পর্যন্ত রিভিউ থাকতে পারে।
Review
ক্লাসে একটি অ্যাট্রিবিউশন এবং লেখক অ্যাট্রিবিউশনও থাকতে পারে। আপনি যদি আপনার অ্যাপে পর্যালোচনা প্রদর্শন করেন, তাহলে আপনাকে অবশ্যই কোনো অ্যাট্রিবিউশন বা লেখকের অ্যাট্রিবিউশনও প্রদর্শন করতে হবে। আরও তথ্যের জন্য, একটি পর্যালোচনা প্রদর্শন দেখুন।
Place
অবজেক্টকে রিভিউ দিয়ে পূরণ করতে, আপনাকে অবশ্যই:
- আপনি যখন আপনার Google ক্লাউড প্রকল্প সেট আপ করবেন তখন নতুন SDK সক্ষম করুন৷
- একটি কার্যকলাপ বা খণ্ডের মধ্যে নতুন SDK শুরু করুন ।
- স্থানের বিবরণ অনুরোধের ক্ষেত্রের তালিকায়
Place.Field.REVIEWS
অন্তর্ভুক্ত করুন। -
PlacesClient.fetchPlace()
কল করুন। পর্যালোচনা ক্ষেত্রটিPlacesClient.findCurrentPlace()
দ্বারা সমর্থিত নয়। -
Place
অবজেক্টে রিভিউ ডেটা ফিল্ড অ্যাক্সেস করতেPlace.getReviews()
পদ্ধতি ব্যবহার করুন।
স্থানের নামের ভাষার কোড অ্যাক্সেস করুন
বিদ্যমান Place.getName()
পদ্ধতি একটি স্থানের নাম সম্বলিত একটি পাঠ্য স্ট্রিং প্রদান করে। স্থানের নাম দিয়ে Place
অবজেক্টকে পপুলেট করতে, আপনাকে অবশ্যই জায়গার বিশদ বিবরণের অনুরোধের ক্ষেত্রের তালিকায় Place.Field.NAME
অন্তর্ভুক্ত করতে হবে।
Place
অবজেক্টে এখন নামের স্ট্রিং এর ভাষা কোড রয়েছে। ভাষা কোড দিয়ে Place
অবজেক্টটি পূরণ করতে, আপনাকে অবশ্যই:
- আপনি যখন আপনার Google ক্লাউড প্রকল্প সেট আপ করবেন তখন নতুন SDK সক্ষম করুন৷
- একটি কার্যকলাপ বা খণ্ডের মধ্যে নতুন SDK শুরু করুন ।
- অনুরোধের ক্ষেত্রের তালিকায়
Place.Field.NAME
অন্তর্ভুক্ত করুন৷ এই মানটিPlace
অবজেক্টে স্থানের নাম এবং ভাষা কোড উভয়ই অন্তর্ভুক্ত করার জন্য প্রতিক্রিয়া কনফিগার করে। -
PlacesClient.fetchPlace()
কল করুন।PlacesClient.findCurrentPlace()
ভাষা কোড ক্ষেত্র সমর্থন করে না। -
Place.getNameLanguageCode()
পদ্ধতি ব্যবহার করুনPlace
অবজেক্টে ভাষা কোড ক্ষেত্র অ্যাক্সেস করতে।
3.3.0 সংস্করণে অঞ্চল কোড সেট করুন
Android এর জন্য স্থান SDK (নতুন) স্থানের বিবরণে অঞ্চল কোড অনুরোধের প্যারামিটার যোগ করে। দুই-অক্ষরের CLDR কোড মান হিসাবে নির্দিষ্ট করা প্রতিক্রিয়া ফর্ম্যাট করতে অঞ্চল কোড ব্যবহার করা হয়। এই পরামিতি অনুসন্ধান ফলাফলের উপর একটি পক্ষপাতী প্রভাব থাকতে পারে। এর কোন পূর্ব মূল্য নেই। অঞ্চল কোড সেট করতে আপনাকে অবশ্যই নতুন SDK সক্ষম করতে হবে৷
উত্তরে ঠিকানা ক্ষেত্রের দেশের নাম যদি অঞ্চল কোডের সাথে মেলে, তাহলে ঠিকানা থেকে দেশের কোড বাদ দেওয়া হয়।
কিছু উল্লেখযোগ্য ব্যতিক্রম সহ বেশিরভাগ CLDR কোডগুলি ISO 3166-1 কোডগুলির সাথে অভিন্ন৷ উদাহরণস্বরূপ, ইউনাইটেড কিংডমের ccTLD হল "uk" (.co.uk) যেখানে এর ISO 3166-1 কোড হল "gb" (প্রযুক্তিগতভাবে "The United Kingdom of Great Britain and Northern Ireland" এর সত্তার জন্য)। প্যারামিটার প্রযোজ্য আইনের উপর ভিত্তি করে ফলাফলকে প্রভাবিত করতে পারে।
আইডি দ্বারা একটি স্থান পান
একটি স্থান আইডি একটি পাঠ্য শনাক্তকারী যা একটি স্থানকে অনন্যভাবে সনাক্ত করে। Android এর জন্য Places SDK-এ, আপনি Place.getId()
কল করে একটি জায়গার আইডি পুনরুদ্ধার করতে পারেন। স্থান স্বয়ংসম্পূর্ণ পরিষেবা সরবরাহ করা অনুসন্ধান ক্যোয়ারী এবং ফিল্টারের সাথে মেলে এমন প্রতিটি স্থানের জন্য একটি স্থান আইডিও প্রদান করে। আপনি স্থান আইডি সংরক্ষণ করতে পারেন এবং পরে আবার Place
বস্তু পুনরুদ্ধার করতে এটি ব্যবহার করতে পারেন।
আইডি দ্বারা একটি স্থান পেতে, একটি FetchPlaceRequest
পাস করে PlacesClient.fetchPlace()
এ কল করুন।
API একটি Task
একটি FetchPlaceResponse
প্রদান করে। FetchPlaceResponse
এ সরবরাহকৃত স্থানের আইডির সাথে মিলে যাওয়া একটি Place
বস্তু রয়েছে।
নিম্নলিখিত কোড উদাহরণটি নির্দিষ্ট স্থানের বিবরণ পেতে fetchPlace()
কল করা দেখায়।
কোটলিন
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify the fields to return. val placeFields = listOf(Place.Field.ID, Place.Field.NAME) // Construct a request object, passing the place ID and fields array. val request = FetchPlaceRequest.newInstance(placeId, placeFields) placesClient.fetchPlace(request) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}") }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.message}") val statusCode = exception.statusCode TODO("Handle error with given status code") } }
জাভা
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Construct a request object, passing the place ID and fields array. final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); placesClient.fetchPlace(request).addOnSuccessListener((response) -> { Place place = response.getPlace(); Log.i(TAG, "Place found: " + place.getName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } });
ওপেন স্ট্যাটাস পান
PlacesClient.isOpen(IsOpenRequest request)
পদ্ধতি একটি IsOpenResponse
অবজেক্ট প্রদান করে যা নির্দেশ করে যে কলে নির্দিষ্ট সময়ের উপর ভিত্তি করে স্থানটি বর্তমানে খোলা আছে কিনা।
এই পদ্ধতিটি IsOpenRequest
টাইপের একটি একক আর্গুমেন্ট নেয় যাতে রয়েছে:
- একটি
Place
বস্তু, বা একটি স্থান আইডি নির্দিষ্ট করে একটি স্ট্রিং। - একটি ঐচ্ছিক সময়ের মান যা 1970-01-01T00:00:00Z থেকে মিলিসেকেন্ডে সময় নির্দিষ্ট করে। যদি কোন সময় নির্দিষ্ট করা না থাকে, ডিফল্ট এখন।
এই পদ্ধতির জন্য নিম্নলিখিত ক্ষেত্রগুলি Place
অবজেক্টে বিদ্যমান থাকা প্রয়োজন:
-
Place.Field.BUSINESS_STATUS
-
Place.Field.CURRENT_OPENING_HOURS
-
Place.Field.OPENING_HOURS
-
Place.Field.UTC_OFFSET
যদি এই ক্ষেত্রগুলি Place
অবজেক্টে দেওয়া না থাকে, অথবা যদি আপনি একটি স্থান আইডি পাস করেন, তবে পদ্ধতিটি তাদের আনার জন্য PlacesClient.fetchPlace()
ব্যবহার করে। প্রয়োজনীয় ক্ষেত্রগুলির সাথে প্লেস অবজেক্ট তৈরি করার বিষয়ে আরও তথ্যের জন্য, স্থানের বিবরণ দেখুন।
নিচের উদাহরণটি নির্ধারণ করে যে একটি জায়গা বর্তমানে খোলা আছে কিনা। এই উদাহরণে, আপনি শুধুমাত্র isOpen()
এ স্থান আইডি পাস করেন:
কোটলিন
val isOpenCalendar: Calendar = Calendar.getInstance() val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" val request: IsOpenRequest = try { IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request) isOpenTask.addOnSuccessListener { response -> val isOpen = response.isOpen } // ...
জাভা
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest); placeTask.addOnSuccessListener( (response) -> isOpen = response.isOpen()); // ...
পরবর্তী উদাহরণটি isOpen()
কল করা দেখায় যেখানে আপনি একটি Place
অবজেক্ট পাস করেন। Place
অবজেক্টে অবশ্যই একটি বৈধ জায়গা আইডি থাকতে হবে:
কোটলিন
val isOpenCalendar: Calendar = Calendar.getInstance() var place: Place val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" // Specify the required fields for an isOpen request. val placeFields: List<Place.Field> = listOf( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET ) val placeRequest: FetchPlaceRequest = FetchPlaceRequest.newInstance(placeId, placeFields) val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest) placeTask.addOnSuccessListener { placeResponse -> place = placeResponse.place val isOpenRequest: IsOpenRequest = try { IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return@addOnSuccessListener } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest) isOpenTask.addOnSuccessListener { isOpenResponse -> val isOpen = isOpenResponse.isOpen } // ... } // ...
জাভা
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; // Specify the required fields for an isOpen request. List<Place.Field> placeFields = new ArrayList<>(Arrays.asList( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET )); FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request); placeTask.addOnSuccessListener( (placeResponse) -> { Place place = placeResponse.getPlace(); IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest); isOpenTask.addOnSuccessListener( (isOpenResponse) -> isOpen = isOpenResponse.isOpen()); // ... }); // ...
আপনার অ্যাপে বৈশিষ্ট্য প্রদর্শন করুন
যখন আপনার অ্যাপ স্থানের পর্যালোচনা সহ স্থান সংক্রান্ত তথ্য প্রদর্শন করে, তখন অ্যাপটিকে অবশ্যই যেকোন বৈশিষ্ট্যও প্রদর্শন করতে হবে। আরও তথ্যের জন্য, বৈশিষ্ট্য দেখুন।
স্থান আইডি সম্পর্কে আরো
Android এর জন্য Places SDK-এ ব্যবহৃত প্লেস আইডি একই আইডেন্টিফায়ার যেমন Places API- তে ব্যবহৃত হয়। প্রতিটি স্থানের আইডি শুধুমাত্র একটি স্থান উল্লেখ করতে পারে, কিন্তু একটি একক স্থানে একাধিক স্থানের আইডি থাকতে পারে। এমন অন্যান্য পরিস্থিতি রয়েছে যার কারণে একটি নতুন জায়গার আইডি পেতে পারে। উদাহরণস্বরূপ, এটি ঘটতে পারে যদি একটি ব্যবসা একটি নতুন অবস্থানে চলে যায়।
যখন আপনি একটি জায়গার আইডি নির্দিষ্ট করে একটি জায়গার জন্য অনুরোধ করেন, তখন আপনি নিশ্চিত হতে পারেন যে আপনি উত্তরে সবসময় একই জায়গা পাবেন (যদি জায়গাটি এখনও বিদ্যমান থাকে)। মনে রাখবেন, যাইহোক, প্রতিক্রিয়াটিতে এমন একটি জায়গার আইডি থাকতে পারে যা আপনার অনুরোধের থেকে আলাদা।
আরও তথ্যের জন্য, স্থান আইডি ওভারভিউ দেখুন।