جستجوی متن (جدید) اطلاعات مجموعهای از مکانها را بر اساس یک رشته برمیگرداند (برای مثال، «پیتزا در نیویورک» یا «فروشگاههای کفش در نزدیکی اتاوا» یا «خیابان اصلی ۱۲۳»). این سرویس با فهرستی از مکانهای منطبق با رشته متن و هرگونه سوگیری مکان تنظیم شده پاسخ میدهد.
علاوه بر پارامترهای مورد نیاز ، جستجوی متن (جدید) از اصلاح جستارها با استفاده از پارامترهای اختیاری برای نتایج بهتر پشتیبانی می کند.
لیستی از مکان ها را با جستجوی متنی دریافت کنید
یک درخواست جستجوی متن با فراخوانی GMSPlacesClient searchByTextWithRequest: ارسال یک شیء GMSPlaceSearchByTextRequest که پارامترهای درخواست و یک روش برگشت را تعریف می کند، از نوع GMSPlaceSearchByTextResultCallback ، برای رسیدگی به پاسخ.
شی GMSPlaceSearchByTextRequest تمام پارامترهای مورد نیاز و اختیاری را برای درخواست مشخص می کند. پارامترهای مورد نیاز عبارتند از:
- فهرست فیلدهایی که باید در شی
GMSPlaceبرگردند، که فیلد ماسک نیز نامیده می شود، همانطور که توسطGMSPlacePropertyتعریف شده است. اگر حداقل یک فیلد را در لیست فیلد مشخص نکنید، یا اگر لیست فیلد را حذف کنید، تماس یک خطا برمیگرداند. - پرس و جو متن .
این مثال درخواست جستجوی متنی مشخص می کند که اشیاء پاسخ GMSPlace حاوی نام مکان و شناسه مکان برای هر شی GMSPlace در نتایج جستجو هستند. همچنین پاسخ را فقط به مکان های برگشتی از نوع "رستوران" فیلتر می کند.
Swift SDK را قرار می دهد
let restriction = GMSPlaceRectangularLocationOption( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
سویفت
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [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().searchByText(with: request, callback: callback)
هدف-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
پاسخ های جستجوی متن
API جستجوی متن، آرایهای از منطبقها را در قالب اشیاء GMSPlace ، با یک شی GMSPlace در هر مکان منطبق، برمیگرداند.
وضعیت باز را دریافت کنید
شی GMSPlacesClient حاوی تابع عضوی به نام isOpenWithRequest ( isOpenRequest در Swift و isPlaceOpenRequest در GooglePlacesSwift) است که بر اساس زمان مشخص شده در تماس، پاسخی را نشان می دهد که نشان می دهد مکان در حال حاضر باز است یا خیر.
این روش یک آرگومان واحد از نوع GMSPlaceIsOpenWithRequest می گیرد که حاوی:
- یک شی
GMSPlaceیا رشته ای که شناسه مکان را مشخص می کند. برای اطلاعات بیشتر در مورد ایجاد شی Place با فیلدهای لازم، جزئیات مکان را ببینید. - یک شیء اختیاری
NSDate(Obj-C) یاDate(Swift) که زمانی را که میخواهید بررسی کنید مشخص میکند. اگر زمان مشخص نشده باشد، پیش فرض اکنون است. - یک روش
GMSPlaceOpenStatusResponseCallbackبرای رسیدگی به پاسخ. >
متد GMSPlaceIsOpenWithRequest به فیلدهای زیر نیاز دارد که در شی GMSPlace تنظیم شوند:
-
GMSPlacePropertyUTCOffsetMinutes -
GMSPlacePropertyBusinessStatus -
GMSPlacePropertyOpeningHours -
GMSPlacePropertyCurrentOpeningHours -
GMSPlacePropertySecondaryOpeningHours
اگر این فیلدها در شیء Place ارائه نشده باشند، یا اگر شناسه مکان را ارسال کنید، این روش از GMSPlacesClient GMSFetchPlaceRequest: برای واکشی آنها استفاده می کند.
پاسخ isOpenWithRequest
isOpenWithRequest یک شی GMSPlaceIsOpenResponse حاوی یک مقدار بولی به نام status را برمی گرداند که نشان می دهد کسب و کار باز است، بسته است یا وضعیت ناشناخته است.
| زبان | ارزش در صورت باز بودن | ارزش در صورت بسته شدن | در صورت ناشناخته بودن وضعیت، مقدار را تعیین کنید |
|---|---|---|---|
| مکان های سوئیفت | true | false | nil |
| سویفت | .open | .closed | .unknown |
| هدف-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
صورتحساب برای isOpenWithRequest
- فیلدهای
GMSPlacePropertyUTCOffsetMinutesوGMSPlacePropertyBusinessStatusتحت عنوان Basic Data SKU شارژ می شوند. مابقی ساعات کار تحت SKU شرکت جزئیات مکان محاسبه می شود. - اگر شی
GMSPlaceشما قبلاً دارای این فیلدها از درخواست قبلی است، دیگر هزینه ای از شما کسر نخواهد شد.
مثال: یک درخواست GMSPlaceIsOpenWithRequest ایجاد کنید
مثال زیر نشان می دهد که چگونه یک GMSPlaceIsOpenWithRequest را در یک شی GMSPlace موجود مقداردهی کنید. 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 }
سویفت
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 } }
هدف-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 } }];
پارامترهای مورد نیاز
از شی GMSPlaceSearchByTextRequest برای تعیین پارامترهای مورد نیاز برای جستجو استفاده کنید.
لیست زمینه
مشخص کنید که کدام ویژگی داده مکان را برگرداند. فهرستی از ویژگیهای
GMSPlaceرا ارسال کنید و فیلدهای داده را برای بازگشت مشخص کنید. اگر ماسک فیلد را حذف کنید، درخواست یک خطا برمیگرداند.فهرستهای فیلد یک روش طراحی خوب برای اطمینان از عدم درخواست دادههای غیرضروری است، که به جلوگیری از زمان پردازش غیر ضروری و هزینههای صورتحساب کمک میکند.
یک یا چند مورد از فیلدهای زیر را مشخص کنید:
فیلدهای زیر شناسه جستجوی متن فقط SKU را فعال میکنند:
GMSPlacePropertyPlaceIDفیلدهای زیر Text Search Pro SKU را فعال می کنند:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyPhotos
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceفیلدهای زیر Text Search Enterprise SKU را فعال می کنند:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteفیلدهای زیر Text Search Enterprise Plus SKU را فعال می کنند:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
متن پرس و جو
رشته متنی که در آن جستجو می شود، به عنوان مثال: "رستوران"، "خیابان اصلی 123"، یا "بهترین مکان برای بازدید در سانفرانسیسکو".
پارامترهای اختیاری
از شی GMSPlaceSearchByTextRequest برای تعیین پارامترهای اختیاری برای جستجو استفاده کنید.
شامل نوع
نتایج را به مکان هایی محدود می کند که با نوع مشخص شده توسط جدول A مطابقت دارند. فقط یک نوع ممکن است مشخص شود. به عنوان مثال:
-
let request = SearchByTextRequest()
request.includedType = "bar" -
let request = SearchByTextRequest()
request.includedType = "pharmacy"
-
isOpenNow
اگر
true، فقط مکانهایی را برگردانید که در زمان ارسال درخواست برای کسب و کار باز هستند. اگرfalse، همه مشاغل را بدون در نظر گرفتن وضعیت باز بازگردانید. مکانهایی که ساعات کار را در پایگاه داده Google Places مشخص نمیکنند، اگر این پارامتر را رویfalseتنظیم کنید، برگردانده میشوند.isStrictTypeFiltering
با پارامتر
includeTypeاستفاده می شود. وقتی رویtrueتنظیم شود، فقط مکان هایی که با انواع مشخص شده توسطincludeTypeمطابقت دارند، برگردانده می شوند. هنگامی که نادرست، پیشفرض، پاسخ میتواند حاوی مکانهایی باشد که با انواع مشخصشده مطابقت ندارند.تعصب موقعیت
منطقه ای را برای جستجو مشخص می کند. این مکان به عنوان یک سوگیری عمل می کند که به این معنی است که نتایج در اطراف مکان مشخص شده می توانند برگردانده شوند، از جمله نتایج خارج از منطقه مشخص شده.
شما می توانید
locationRestrictionیاlocationBiasرا مشخص کنید، اما نه هر دو را.locationRestrictionرا به عنوان مشخص کننده منطقه ای که نتایج باید در آن باشد، وlocationBiasبه عنوان تعیین منطقه ای که نتایج باید نزدیک باشد اما می تواند خارج از منطقه باشد، در نظر بگیرید.منطقه را به صورت یک Viewport مستطیلی یا به صورت دایره مشخص کنید.
دایره با نقطه مرکزی و شعاع بر حسب متر تعریف می شود. شعاع باید بین 0.0 تا 50000.0 باشد. شعاع پیش فرض 0.0 است. به عنوان مثال:
let request = SearchByTextRequest() request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
مستطیل یک نمای عرض-طول جغرافیایی است که به صورت دو نقطه پایین و بالا به صورت مورب در مقابل هم نمایش داده می شود. نقطه پایین گوشه جنوب غربی مستطیل را نشان می دهد و نقطه بالا نمایانگر گوشه شمال شرقی مستطیل است.
یک viewport یک منطقه بسته در نظر گرفته می شود، به این معنی که شامل مرز آن می شود. محدوده عرض جغرافیایی باید بین 90- تا 90 درجه باشد و محدوده طول جغرافیایی باید بین 180- تا 180 درجه باشد:
- اگر
low=high، نمای از همان نقطه واحد تشکیل شده است. - اگر
low.longitude>high.longitude, محدوده طول معکوس می شود (نمایش از خط طول جغرافیایی 180 درجه عبور می کند). - اگر
low.longitude= -180 درجه وhigh.longitude= 180 درجه باشد، درگاه دید شامل تمام طولهای جغرافیایی میشود. - اگر
low.longitude= 180 درجه وhigh.longitude= -180 درجه باشد، محدوده طول جغرافیایی خالی است. - اگر
low.latitude>high.latitude، محدوده عرض جغرافیایی خالی است.
- اگر
محدودیت مکان
منطقه ای را برای جستجو مشخص می کند. نتایج خارج از منطقه مشخص شده برگردانده نمی شوند. منطقه را به عنوان یک Viewport مستطیلی مشخص کنید. برای اطلاعات در مورد تعریف Viewport به توضیحات
locationBiasمراجعه کنید.شما می توانید
locationRestrictionیاlocationBiasرا مشخص کنید، اما نه هر دو را.locationRestrictionرا به عنوان مشخص کننده منطقه ای که نتایج باید در آن باشد، وlocationBiasبه عنوان تعیین منطقه ای که نتایج باید نزدیک باشد اما می تواند خارج از منطقه باشد، در نظر بگیرید.maxResultCount
حداکثر تعداد نتایج مکان برای بازگشت را مشخص می کند. باید بین 1 تا 20 (پیشفرض) باشد.
امتیاز مین
نتایج را فقط به کسانی محدود میکند که میانگین رتبهبندی کاربران آنها بیشتر یا مساوی این حد باشد. مقادیر باید بین 0.0 و 5.0 (شامل) با افزایش 0.5 باشد. به عنوان مثال: 0، 0.5، 1.0، ...، 5.0 شامل. مقادیر به نزدیکترین 0.5 گرد می شوند. به عنوان مثال، مقدار 0.6 تمام نتایج با رتبه بندی کمتر از 1.0 را حذف می کند.
سطوح قیمت
جستجو را به مکانهایی که در سطوح قیمت مشخصی علامتگذاری شدهاند محدود کنید. پیش فرض این است که تمام سطوح قیمت را انتخاب کنید.
آرایه ای از یک یا چند مقدار تعریف شده توسط
PriceLevelرا مشخص کنید.به عنوان مثال:
let request = SearchByTextRequest() request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
رتبه اولویت
نحوه رتبه بندی نتایج در پاسخ بر اساس نوع پرس و جو را مشخص می کند:
- برای یک جستار طبقه بندی شده مانند "رستوران ها در شهر نیویورک"،
.relevance(رتبه بندی نتایج بر اساس ارتباط جستجو) پیش فرض است. می توانیدrankPreferenceروی.relevanceیا.distanceتنظیم کنید (نتایج را بر اساس فاصله رتبه بندی کنید). - برای یک جستار غیر دسته بندی مانند "Mountain View, CA"، توصیه می کنیم که
rankPreferenceرا تنظیم نشده بگذارید.
- برای یک جستار طبقه بندی شده مانند "رستوران ها در شهر نیویورک"،
منطقه کد
کد منطقه ای که برای قالب بندی پاسخ استفاده می شود، به عنوان مقدار کد CLDR دو کاراکتری مشخص شده است. این پارامتر همچنین می تواند یک اثر سوگیری در نتایج جستجو داشته باشد. هیچ مقدار پیش فرض وجود ندارد.
اگر نام کشور فیلد آدرس در پاسخ با کد منطقه مطابقت داشته باشد، کد کشور از آدرس حذف می شود.
اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با برخی استثناهای قابل توجه. برای مثال، ccTLD بریتانیا "uk" (.co.uk) است در حالی که کد ISO 3166-1 آن "gb" است (از لحاظ فنی برای نهاد "پادشاهی متحده بریتانیای کبیر و ایرلند شمالی"). این پارامتر می تواند بر نتایج بر اساس قانون قابل اجرا تأثیر بگذارد.
باید شامل PureServiceAreaBusinesses باشد
اگر
true، مشاغل منطقه خدمات خالص را در نتایج جستجو برمیگرداند. یک کسبوکار با منطقه خدمات خالص، کسبوکاری است که مستقیماً از مشتریان بازدید میکند یا به آنها تحویل میدهد، اما به مشتریان در آدرس کسبوکارشان خدمات ارائه نمیدهد.به عنوان مثال:
Swift SDK را قرار می دهد
let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses = true
سویفت
let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses: true
هدف-C
GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyAll]]; request.shouldIncludePureServiceAreaBusinesses = YES;
اسناد را در برنامه خود نمایش دهید
هنگامی که برنامه شما اطلاعات به دست آمده از GMSPlacesClient را نمایش می دهد، مانند عکس ها و نظرات، برنامه باید اسناد مورد نیاز را نیز نمایش دهد.
برای مثال، ویژگی reviews شی GMSPlacesClient حاوی آرایه ای از حداکثر پنج شی GMSPlaceReview است. هر شیء GMSPlaceReview میتواند حاوی اسناد و اعتبارات نویسنده باشد. اگر نظر را در برنامه خود نمایش دهید، باید هر گونه انتساب یا منبع نویسنده را نیز نمایش دهید.
برای اطلاعات بیشتر، به اسناد مربوط به اسناد مراجعه کنید.