جستجوی متن اطلاعات مجموعه ای از مکان ها را بر اساس یک رشته برمی گرداند. به عنوان مثال، "پیتزا در نیویورک"، "فروشگاه های کفش در نزدیکی اتاوا"، یا "خیابان اصلی 123". این سرویس با لیستی از مکانهای مطابق با رشته متن و هر گونه سوگیری مکان تنظیم شده پاسخ میدهد.
این سرویس به ویژه برای ایجاد پرس و جوهای آدرس مبهم در یک سیستم خودکار مفید است و اجزای غیر آدرسی رشته ممکن است با مشاغل و همچنین آدرس ها مطابقت داشته باشند. نمونههایی از جستارهای مبهم آدرس، آدرسها یا درخواستهایی با قالببندی ضعیف هستند که شامل اجزای غیرآدرس مانند نامهای کسبوکار هستند. درخواستهایی مانند دو مثال اول ممکن است نتیجه صفر را برگردانند مگر اینکه یک مکان (مانند منطقه، محدودیت مکان، یا تعصب مکان) تنظیم شده باشد.
"10 High Street, UK" یا "123 Main Street, US" | چندین "های استریت" در بریتانیا؛ چندین "خیابان اصلی" در ایالات متحده پرس و جو نتایج مطلوبی را بر نمی گرداند مگر اینکه محدودیت مکانی تعیین شده باشد. |
"رستوران زنجیره ای نیویورک" | چندین مکان "رستوران زنجیره ای" در نیویورک. بدون آدرس خیابان یا حتی نام خیابان. |
"10 High Street, Escher UK" یا "123 Main Street, Pleasanton US" | تنها یک «خیابان بالا» در شهر اسچر بریتانیا. تنها یک "خیابان اصلی" در شهر Pleasanton CA ایالات متحده. |
"UniqueRestaurantName New York" | تنها یک موسسه با این نام در نیویورک. هیچ آدرس خیابانی برای تفکیک لازم نیست. |
"رستوران های پیتزا در نیویورک" | این پرس و جو شامل محدودیت مکان آن است و "رستوران پیتزا" یک نوع مکان کاملاً تعریف شده است. چندین نتیجه را برمی گرداند. |
"8700-670-514 1+" | این درخواست شامل یک شماره تلفن است. چندین نتیجه را برای مکانهای مرتبط با آن شماره تلفن برمیگرداند. |
لیستی از مکان ها را با جستجوی متنی دریافت کنید
درخواست جستجوی متن در Places SDK برای iOS (جدید) به شکل زیر است:
سریع
func testPlaceSearchByTextRequestGMPSRequestCreationWithProperties() {
let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID];
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
request.locationRestriction = GMSPlaceRectangularLocationOption(
CLLocationCoordinate2D(latitude: 20, longitude: 30),
CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
}
هدف-C
- (void)testPlaceSearchByTextRequestGMPSRequestCreationWithProperties {
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.locationRestriction = GMSPlaceRectangularLocationOption(
CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0);
}
پارامترهای مورد نیاز
لیست زمینه
مشخص کنید که کدام ویژگی داده مکان را برگرداند. فهرستی از ویژگیهای
GMSPlace
را ارسال کنید و فیلدهای داده را برای بازگشت مشخص کنید. اگر ماسک فیلد را حذف کنید، درخواست یک خطا برمیگرداند.فهرستهای فیلد یک روش طراحی خوب برای اطمینان از عدم درخواست دادههای غیرضروری است، که به جلوگیری از زمان پردازش غیر ضروری و هزینههای صورتحساب کمک میکند.
یک یا چند مورد از فیلدهای زیر را مشخص کنید:
فیلدهای زیر SKU جستجوی متن (فقط شناسه) را راهاندازی میکنند:
GMSPlacePropertyPlaceID
،GMSPlacePropertyName
فیلدهای زیر SKU جستجوی متن (پایه) را راهاندازی میکنند:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
GMSPlacePropertyTypes
GMSPlacePropertyPlusCode
GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
فیلدهای زیر SKU جستجوی متن (پیشرفته) را فعال می کنند:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyOpeningHours
GMSPlacePropertyWebsite
فیلدهای زیر SKU جستجوی متن (ترجیحی) را فعال می کنند:
GMSPlacePropertyCurbsidePickup
،GMSPlacePropertyDelivery
،GMSPlacePropertyDineIn
،GMSPlacePropertyEditorialSummary
،GMSPlacePropertyReservable
،GMSPlacePropertyServesBeer
،GMSPlacePropertyServesBreakfast
،GMSPlacePropertyServesBrunch
، GMSPlacePropertySummaryGMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
متن پرس و جو
رشته متنی که در آن جستجو می شود، به عنوان مثال: "رستوران"، "خیابان اصلی 123"، یا "بهترین مکان برای بازدید در سانفرانسیسکو".
پارامترهای اختیاری
شامل نوع
نتایج را به مکان هایی محدود می کند که با نوع مشخص شده توسط جدول A مطابقت دارند. فقط یک نوع ممکن است مشخص شود. مثلا:
-
request.includedType = "bar"
-
request.includedType = "pharmacy"
-
isOpenNow
اگر
true
، فقط مکانهایی را برگردانید که در زمان ارسال درخواست برای کسب و کار باز هستند. اگرfalse
، همه مشاغل را بدون در نظر گرفتن وضعیت باز بازگردانید. مکانهایی که ساعات کار را در پایگاه داده Google Places مشخص نمیکنند، اگر این پارامتر را رویfalse
تنظیم کنید، برگردانده میشوند.isStrictTypeFiltering
با پارامتر
includeType
استفاده می شود. وقتی رویtrue
تنظیم شود، فقط مکان هایی که با انواع مشخص شده توسطincludeType
مطابقت دارند، برگردانده می شوند. هنگامی که نادرست، پیشفرض، پاسخ میتواند حاوی مکانهایی باشد که با انواع مشخصشده مطابقت ندارند.تعصب موقعیت
منطقه ای را برای جستجو مشخص می کند. این مکان به عنوان یک سوگیری عمل می کند که به این معنی است که نتایج در اطراف مکان مشخص شده می توانند برگردانده شوند، از جمله نتایج خارج از منطقه مشخص شده.
شما می توانید
locationRestriction
یاlocationBias
را مشخص کنید، اما نه هر دو را.locationRestriction
به عنوان مشخص کننده منطقه ای که نتایج باید در آن باشد، وlocationBias
به عنوان تعیین منطقه ای که نتایج باید نزدیک باشد اما می تواند خارج از منطقه باشد، در نظر بگیرید.منطقه را به صورت یک Viewport مستطیلی یا به صورت دایره مشخص کنید.
دایره با نقطه مرکزی و شعاع بر حسب متر تعریف می شود. شعاع باید بین 0.0 تا 50000.0 باشد. شعاع پیش فرض 0.0 است. مثلا:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.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
را مشخص کنید.مثلا:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
رتبه اولویت
نحوه رتبه بندی نتایج در پاسخ را مشخص می کند. API به صورت پیشفرض از
RELEVANCE
در صورت امکان استفاده میکند. برای مثال، برای درخواستی مانند «رستورانها در شهر نیویورک»،RELEVANCE
پیشفرض است. برای جستارهای جغرافیایی، مانند "Mountain View, CA" یا انواع دیگر پرس و جوها، هیچ پیش فرضی اعمال نمی شود و نتایج به ترتیبی که توسط backend برگردانده می شوند ظاهر می شوند.ارزش ها عبارتند از:
-
.distance
: نتایج را بر اساس فاصله رتبه بندی کنید. -
.relevance
: رتبه بندی نتایج بر اساس ارتباط.
-
منطقه کد
کد منطقه ای که برای قالب بندی پاسخ استفاده می شود، به عنوان مقدار کد CLDR دو کاراکتری مشخص شده است. این پارامتر همچنین می تواند یک اثر سوگیری در نتایج جستجو داشته باشد. هیچ مقدار پیش فرضی وجود ندارد.
اگر نام کشور فیلد آدرس در پاسخ با کد منطقه مطابقت داشته باشد، کد کشور از آدرس حذف می شود.
اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با برخی استثناهای قابل توجه. برای مثال، ccTLD بریتانیا "uk" (.co.uk) است در حالی که کد ISO 3166-1 آن "gb" است (از لحاظ فنی برای نهاد "پادشاهی متحده بریتانیای کبیر و ایرلند شمالی"). این پارامتر می تواند بر نتایج بر اساس قانون قابل اجرا تأثیر بگذارد.
پاسخ های جستجوی متن
API جستجوی متن، آرایهای از منطبقها را در قالب اشیاء GMSPlace
، با یک شی GMSPlace
در هر مکان منطبق، برمیگرداند.