'আশেপাশের সার্চ' (নতুন) অনুরোধে, সার্চ করার জন্য অঞ্চলকে ইনপুট হিসেবে নেওয়া হয়।
এটি একটি বৃত্ত হিসেবে নির্দিষ্ট করা হয়, যা বৃত্তের কেন্দ্রবিন্দুর অক্ষাংশ ও দ্রাঘিমাংশ কোঅর্ডিনেট
এবং মিটারে ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। অনুরোধটি মিলে যাওয়া জায়গার একটি তালিকা রিটার্ন করে, প্রতিটি জায়গাকে নির্দিষ্ট সার্চ এরিয়ার মধ্যে একটি
GMSPlace
অবজেক্টের মাধ্যমে দেখানো হয়।
ডিফল্ট হিসেবে, উত্তরে সার্চ করা এলাকার মধ্যে সব ধরনের জায়গা থাকে। আপনি ঐচ্ছিকভাবে উত্তর ফিল্টার করতে পারেন, এর জন্য উত্তরে স্পষ্টভাবে অন্তর্ভুক্ত করতে বা বাদ দিতে হবে এমন জায়গার ধরনের একটি তালিকা নির্দিষ্ট করুন। যেমন, আপনি নির্দিষ্ট করে দিতে পারেন যে উত্তরে শুধুমাত্র "রেস্তোরাঁ", "বেকারি" এবং "ক্যাফে" ধরনের জায়গা অন্তর্ভুক্ত করা হবে অথবা "স্কুল" ধরনের সব জায়গা বাদ দেওয়া হবে।
নিয়ারবাই সার্চ (নতুন) সংক্রান্ত অনুরোধ
GMSPlacesClient searchNearbyWithRequest:
কল করে 'আশেপাশে সার্চ করুন' সংক্রান্ত অনুরোধ করুন,
GMSPlaceSearchNearbyRequest
অবজেক্ট পাস করুন যা অনুরোধের প্যারামিটার এবং কলব্যাক পদ্ধতিকে সংজ্ঞায়িত করে, GMSPlaceSearchNearbyResultCallback
টাইপের, উত্তর ম্যানেজ করার জন্য।
GMSPlaceSearchNearbyRequest অবজেক্টে অনুরোধের জন্য সব
আবশ্যক ও ঐচ্ছিক
প্যারামিটার উল্লেখ করা থাকে। প্রয়োজনীয় প্যারামিটারের মধ্যে এগুলি অন্তর্ভুক্ত:
GMSPlaceঅবজেক্টে রিটার্ন করার জন্য ফিল্ডের তালিকা, এছাড়াও এটিকে ফিল্ড মাস্ক বলা হয়, যাGMSPlacePropertyদ্বারা সংজ্ঞায়িত করা হয়। ফিল্ড তালিকায় কমপক্ষে একটি ফিল্ড নির্দিষ্ট না করলে অথবা ফিল্ড তালিকা বাদ দিলে কলটি একটি সমস্যা রিটার্ন করে।- লোকেশন সংক্রান্ত বিধিনিষেধ, অর্থাৎ সার্চ এরিয়া নির্ধারণকারী বৃত্ত।
এই কাছাকাছি সার্চের অনুরোধের উদাহরণে উল্লেখ করা হয়েছে যে উত্তরে GMSPlace অবজেক্টে
সার্চের ফলাফলে প্রতিটি GMSPlace অবজেক্টের জন্য
জায়গার নাম (GMSPlacePropertyName) ও জায়গার কোঅর্ডিনেট
(GMSPlacePropertyCoordinate) থাকবে। এছাড়াও, এটি উত্তর ফিল্টার করে যাতে শুধুমাত্র "রেস্তোরাঁ" এবং "ক্যাফে" ধরনের জায়গা দেখানো হয়।
Places Swift SDK
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
নিয়ারবাই সার্চের উত্তর
Nearby Search API, ম্যাচ করা আইটেমের একটি অ্যারে রিটার্ন করে, যাGMSPlace
অবজেক্টের আকারে থাকে। ম্যাচ করা প্রতিটি জায়গার জন্য একটি করে GMSPlace অবজেক্ট থাকে।
খোলা থাকার স্ট্যাটাস পাওয়া
GMSPlacesClient অবজেক্টে isOpenWithRequest (Swift-এ isOpenRequest এবং GooglePlacesSwift-এ isPlaceOpenRequest) নামের একটি মেম্বার ফাংশন থাকে যা কল করার সময় উল্লেখ করা সময়ের ভিত্তিতে জায়গাটি বর্তমানে খোলা আছে কিনা তা নির্দেশ করে এমন একটি উত্তর রিটার্ন করে।
এই পদ্ধতিতে GMSPlaceIsOpenWithRequest ধরনের একটি আর্গুমেন্ট নেওয়া হয় যার মধ্যে এগুলি থাকে:
GMSPlaceঅবজেক্ট অথবা কোনও জায়গার আইডি উল্লেখ করা স্ট্রিং। প্রয়োজনীয় ফিল্ড সহ Place অবজেক্ট তৈরি করার ব্যাপারে আরও জানতে, জায়গার বিবরণ দেখুন।
- আপনি যে সময় চেক করতে চান তা উল্লেখ করে একটি ঐচ্ছিক
NSDate(Obj-C) বাDate(Swift) অবজেক্ট। কোনও সময় উল্লেখ করা না থাকলে, ডিফল্ট হিসেবে এখনকার সময় সেট করা হয়। - উত্তর ম্যানেজ করার একটি
GMSPlaceOpenStatusResponseCallbackপদ্ধতি। >
GMSPlaceIsOpenWithRequest পদ্ধতিতে GMSPlace অবজেক্টে নিম্নলিখিত ফিল্ড সেট করতে হবে:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
প্লেস অবজেক্টে এইসব ফিল্ড প্রদান করা না হলে অথবা আপনি কোনও প্লেস আইডি পাস করলে, মেথডটি সেগুলি ফেচ করার জন্য GMSPlacesClient GMSFetchPlaceRequest: ব্যবহার করে।
isOpenWithRequest-এর উত্তর
isOpenWithRequest একটি GMSPlaceIsOpenResponse অবজেক্ট রিটার্ন করে যাতে status নামের একটি বুলিয়ান ভ্যালু থাকে। এটি ব্যবসা খোলা, বন্ধ নাকি স্ট্যাটাস অজানা তা দেখায়।
| ভাষা | খোলা থাকলে ভ্যালু | বন্ধ থাকলে ভ্যালু | স্ট্যাটাস জানা না থাকলে ভ্যালু |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
isOpenWithRequest-এর জন্য বিলিং
GMSPlacePropertyUTCOffsetMinutesওGMSPlacePropertyBusinessStatusফিল্ডের জন্য প্রাথমিক ডেটা SKU-এর অধীনে চার্জ করা হয়। খোলার সময়ের বাকি অংশের জন্য জায়গার বিবরণ Enterprise SKU অনুযায়ী চার্জ করা হয়।- আপনার
GMSPlaceঅবজেক্টে আগে থেকেই আগের অনুরোধের এইসব ফিল্ড থাকলে, আপনাকে আবার চার্জ করা হবে না।
উদাহরণ: GMSPlaceIsOpenWithRequest-এর অনুরোধ করুন
নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে আগে থেকে থাকা GMSPlace অবজেক্টের মধ্যে GMSPlaceIsOpenWithRequest ইনিশিয়ালাইজ করতে হয়।
Places Swift SDK
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
প্রয়োজনীয় প্যারামিটার
সার্চের জন্য প্রয়োজনীয় প্যারামিটার নির্দিষ্ট করতে GMSPlaceSearchNearbyRequest অবজেক্ট ব্যবহার করুন।
-
ফিল্ডের তালিকা
আপনি জায়গার বিবরণ সম্পর্কে অনুরোধ করলে, আপনাকে অবশ্যই ফিল্ড মাস্ক হিসেবে জায়গার জন্য
GMSPlaceঅবজেক্টে ফেরত দেওয়ার জন্য ডেটা নির্দিষ্ট করতে হবে। ফিল্ড মাস্ক সংজ্ঞায়িত করতে,GMSPlacePropertyথেকেGMSPlaceSearchNearbyRequestঅবজেক্টে মানগুলির একটি অ্যারে পাস করুন। আপনি যাতে অপ্রয়োজনীয় ডেটা না চান তা নিশ্চিত করতে ফিল্ড মাস্কিং হল একটি ভাল ডিজাইন প্র্যাক্টিস, যা অপ্রয়োজনীয় প্রসেসিং সময় ও বিলিং চার্জ এড়াতে সাহায্য করে।নিচে উল্লেখ করা ফিল্ডের মধ্যে এক বা একাধিক ফিল্ড নির্দিষ্ট করুন:
নিম্নলিখিত ফিল্ডগুলি Nearby Search Pro SKU ট্রিগার করে:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceফিল্ড ও সংশ্লিষ্ট SKU-এর সম্পূর্ণ তালিকা দেখতে, প্লেস ডেটা ফিল্ড (নতুন) দেখুন।
নিম্নলিখিত ফিল্ডগুলি Nearby Search Enterprise SKU ট্রিগার করে:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteফিল্ড ও সংশ্লিষ্ট SKU-এর সম্পূর্ণ তালিকা দেখতে, প্লেস ডেটা ফিল্ড (নতুন) দেখুন।
নিম্নলিখিত ফিল্ডগুলি Nearby Search Enterprise Plus SKU ট্রিগার করে:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutফিল্ডের সম্পূর্ণ তালিকা এবং তাদের সাথে সম্পর্কিত SKU-এর জন্য, জায়গার ডেটা ফিল্ড (নতুন) দেখুন।
নিম্নলিখিত উদাহরণে দুটি ফিল্ড ভ্যালুর তালিকা পাস করা হয় যাতে নির্দিষ্ট করা যায় যে অনুরোধের মাধ্যমে ফেরত পাঠানো
GMSPlaceঅবজেক্টেnameএবংplaceIDফিল্ড আছে:Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
-
locationRestriction
GMSPlaceLocationRestrictionএমন একটি অবজেক্ট যা নির্দিষ্ট সার্চ করার জন্য অঞ্চলকে সংজ্ঞায়িত করে। এটি একটি বৃত্ত হিসেবে সংজ্ঞায়িত করা হয়, যা কেন্দ্র বিন্দু এবং মিটারে ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। ব্যাসার্ধ অবশ্যই ০.০ থেকে ৫০০০০.০-এর মধ্যে হতে হবে, এই দুটি ধরে। ডিফল্ট ব্যাসার্ধ হল 0.0. আপনার অনুরোধে এটি ০.০-এর থেকে বেশি ভ্যালুতে সেট করতে হবে।
ঐচ্ছিক প্যারামিটার
সার্চের জন্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করতে GMSPlaceSearchNearbyRequest অবজেক্ট ব্যবহার করুন।
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
আপনাকে types Table A থেকে ধরনের একটি তালিকা নির্দিষ্ট করতে দেয় যা সার্চ ফলাফল ফিল্টার করতে ব্যবহার করা হয়। প্রতিটি ধরনের বিধিনিষেধের বিভাগে সর্বাধিক ৫০টি ধরন নির্দিষ্ট করা যেতে পারে।
কোনও জায়গার সাথে যুক্ত টেবিল ক থেকে কোনও জায়গার শুধুমাত্র একটি প্রাথমিক ধরন থাকতে পারে। যেমন, প্রাইমারি ধরন হতে পারে
"mexican_restaurant"বা"steak_house"। কোনও জায়গার প্রাথমিক ধরন অনুযায়ী ফলাফল ফিল্টার করতেincludedPrimaryTypesএবংexcludedPrimaryTypesব্যবহার করুন।এছাড়াও, কোনও জায়গার সাথে যুক্ত সারণী ক-এর ধরন থেকে একাধিক ধরনের ভ্যালু থাকতে পারে। যেমন, কোনও রেস্তোরাঁর নিম্নলিখিত ধরন থাকতে পারে:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". কোনও জায়গার সাথে যুক্ত থাকা ধরনের তালিকায় ফলাফল ফিল্টার করতেincludedTypesওexcludedTypesব্যবহার করুন।আপনি যখন
"restaurant"বা"hotel"-এর মতো সাধারণ প্রাথমিক ধরন নির্দিষ্ট করেন, তখন উত্তরে নির্দিষ্ট করা ধরনের চেয়ে আরও নির্দিষ্ট প্রাথমিক ধরন সহ জায়গা থাকতে পারে। যেমন, আপনি একটি প্রাথমিক ধরন অন্তর্ভুক্ত করার জন্য নির্দিষ্ট করেছেন"restaurant"। উত্তরে"restaurant"প্রাথমিক ধরনের জায়গা থাকতে পারে, তবে উত্তরে আরও নির্দিষ্ট প্রাথমিক ধরনের জায়গাও থাকতে পারে, যেমন"chinese_restaurant"বা"seafood_restaurant"।একাধিক ধরনের বিধিনিষেধ সহ কোনও সার্চ নির্দিষ্ট করা হলে, শুধুমাত্র সেইসব জায়গা ফেরানো হয় যেগুলি সব বিধিনিষেধ মেনে চলে। যেমন, আপনি যদি
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}উল্লেখ করেন, তাহলে ফেরত আসা জায়গাগুলি"restaurant"সম্পর্কিত পরিষেবা প্রদান করে কিন্তু মূলত"steak_house"হিসেবে কাজ করে না।includedTypes
সার্চ করার জন্য সারণী ক থেকে জায়গার প্রকারের তালিকা। এই প্যারামিটার বাদ দেওয়া হলে, সব ধরনের জায়গা দেখানো হয়।
excludedTypes
সার্চ থেকে বাদ দেওয়ার জন্য টেবিল ক-এর জায়গার ধরনের তালিকা।
আপনি যদি অনুরোধে
includedTypes(যেমন"school") এবংexcludedTypes(যেমন"primary_school") দুটিই উল্লেখ করেন, তাহলে উত্তরে এমন জায়গা অন্তর্ভুক্ত থাকে যেগুলি"school"হিসেবে শ্রেণীবদ্ধ করা হয়েছে, কিন্তু"primary_school"হিসেবে নয়। উত্তরে এমন জায়গা উল্লেখ করা হয়েছে যাincludedTypes-এর অন্তত একটি এবংexcludedTypes-এর কোনওটির সাথে ম্যাচ করে না।যদি কোনও পরস্পরবিরোধী ধরন থাকে, যেমন
includedTypesএবংexcludedTypes, দুটিতেই কোনও ধরন দেখা গেলে, একটিINVALID_REQUESTসমস্যা রিটার্ন করা হয়।includedPrimaryTypes
সার্চে অন্তর্ভুক্ত করার জন্য সারণী ক থেকে প্রাথমিক জায়গার ধরনের তালিকা।
excludedPrimaryTypes
সার্চ থেকে বাদ দেওয়ার জন্য সারণি ক থেকে প্রাথমিক জায়গার ধরনের তালিকা।
যদি কোনও বিরোধপূর্ণ প্রাথমিক ধরন থাকে, যেমন একটি ধরন যা
includedPrimaryTypesএবংexcludedPrimaryTypes, দুটিতেই দেখা যায়, তাহলে একটিINVALID_ARGUMENTসমস্যা পাওয়া গেছে। -
maxResultCount
ফেরত পাঠানোর জন্য সর্বাধিক কতগুলি জায়গার ফলাফল নির্দিষ্ট করে। ১ থেকে ২০ (ডিফল্ট) সংখ্যার মধ্যে হতে হবে।
-
rankPreference
ব্যবহার করার জন্য র্যাঙ্কিংয়ের ধরন। এই প্যারামিটার বাদ দেওয়া হলে, ফলাফলগুলি জনপ্রিয়তা অনুসারে র্যাঙ্ক করা হয়। নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
.popularity(ডিফল্ট) ফলাফল জনপ্রিয়তার ভিত্তিতে সাজায়।.distanceনির্দিষ্ট লোকেশন থেকে দূরত্বের ভিত্তিতে ছোট থেকে বড় ক্রমে ফলাফল সাজায়।
-
regionCode
উত্তর ফর্ম্যাট করার জন্য ব্যবহৃত অঞ্চল কোড, যা দুটি অক্ষরের CLDR কোড ভ্যালু হিসেবে নির্দিষ্ট করা আছে। কোনও ডিফল্ট ভ্যালু নেই।
উত্তরে
formattedAddressফিল্ডের দেশের নামregionCode-এর সাথে মিলে গেলে,formattedAddressথেকে দেশের কোড বাদ দেওয়া হয়। এই প্যারামিটারadrFormatAddress-এর উপর কোনও প্রভাব ফেলে না, কারণ এতে সবসময় দেশের নাম থাকে অথবাshortFormattedAddress-এর উপরও কোনও প্রভাব ফেলে না, কারণ এতে কখনওই দেশের নাম থাকে না।বেশিরভাগ CLDR কোড ISO 3166-1 কোডের মতো একই, তবে কিছু উল্লেখযোগ্য ব্যতিক্রম আছে। যেমন, যুক্তরাজ্যের ccTLD হল "uk" (.co.uk) এবং এর ISO 3166-1 কোড হল "gb" (প্রযুক্তিগতভাবে এটি "গ্রেট ব্রিটেন ও উত্তর আয়ারল্যান্ডের যুক্তরাজ্য" এন্টিটির জন্য)। প্রযোজ্য আইনের উপর ভিত্তি করে প্যারামিটার ফলাফলে প্রভাব ফেলতে পারে।
আপনার অ্যাপে অ্যাট্রিবিউশন দেখান
আপনার অ্যাপ যখন
GMSPlacesClient-এর
থেকে পাওয়া তথ্য দেখায়, যেমন ফটো ও রিভিউ, তখন অ্যাপটিকে প্রয়োজনীয় অ্যাট্রিবিউশনও দেখাতে হবে।
যেমন, GMSPlacesClient অবজেক্টের reviews প্রপার্টিতে
পাঁচটি পর্যন্ত
GMSPlaceReview
অবজেক্টের একটি অ্যারে থাকে। প্রতিটি GMSPlaceReview অবজেক্টে অ্যাট্রিবিউশন ও লেখকের অ্যাট্রিবিউশন থাকতে পারে।
আপনি নিজের অ্যাপে রিভিউ দেখালে, আপনাকে অবশ্যই অ্যাট্রিবিউশন বা লেখকের
অ্যাট্রিবিউশনও দেখাতে হবে।
আরও তথ্যের জন্য, অ্যাট্রিবিউশন সংক্রান্ত ডকুমেন্টেশন দেখুন।