البحث النصي يعرض معلومات حول مجموعة من الأماكن بناءً على سلسلة. على سبيل المثال، "بيتزا في القاهرة" أو "متاجر أحذية بالقرب من الإسكندرية" أو "123 شارع الهرم". تستجيب الخدمة بعرض قائمة بالأماكن تطابق السلسلة النصية وأي تحيز موقع محدد.
تكون الخدمة مفيدة بشكل خاص لإنشاء عنوان غامض في نظام آلي والمكونات غير العنوانية في السلسلة قد تتطابق مع الأنشطة التجارية وكذلك . ومن أمثلة طلبات البحث الغامضة العناوين ذات التنسيق الرديء. أو الطلبات التي تتضمن مكوّنات لا تشمل العناوين، مثل أسماء الأنشطة التجارية قد لا تعرض طلبات مثل أول مثالين نتائج صفرية ما لم الموقع الجغرافي (مثل المنطقة أو قيود الموقع الجغرافي أو انحياز الموقع الجغرافي).
"10 High Street, UK" أو "123 الشارع الرئيسي، الولايات المتحدة" | العديد من متاجر "هاي ستريت" في المملكة المتحدة العديد من "الشوارع الرئيسية" في الولايات المتحدة. لا يعرض طلب البحث نتائج مرغوبة ما لم يكن تقييد الموقع تعيين. |
"سلسلة مطاعم نيويورك" | "مطعم تابع لسلسلة" متعددة المختلفة في نيويورك؛ لا يوجد عنوان شارع أو حتى اسم الشارع. |
"10 High Street, Escher UK" أو "123 الشارع الرئيسي, بليسانتون الولايات المتحدة" | شارع "هاي ستريت" واحد فقط في مدينة إيشر بالمملكة المتحدة؛ "شارع رئيسي" واحد فقط في مدينة بليسانتون بولاية كاليفورنيا الأمريكية. |
"UniqueRestaurantName في نيويورك" | مؤسسة واحدة فقط بهذا الاسم في نيويورك؛ لا يوجد عنوان شارع اللازمة للتمييز. |
"مطاعم البيتزا في دبي" | يتضمن طلب البحث هذا قيود الموقع، و"مطاعم البيتزا" CANNOT TRANSLATE نوع مكان محدد جيدًا. ويؤدي إلى إرجاع نتائج متعددة. |
" +1 514-670-8700" | يحتوي طلب البحث هذا على رقم هاتف. يقوم بإرجاع نتائج متعددة الأماكن المرتبطة برقم الهاتف هذا. |
الحصول على قائمة بالأماكن من خلال البحث النصي
يمكنك تقديم طلب بحث نصي من خلال الاتصال بالرقم GMSPlacesClient
searchByTextWithRequest:
،
GMSPlaceSearchByTextRequest
يحدد معلمات الطلب وطريقة معاودة الاتصال، من النوع
GMSPlaceSearchByTextResultCallback
,
للتعامل مع الرد.
ويحدّد الكائن GMSPlaceSearchByTextRequest
جميع
المَعلمات المطلوبة والاختيارية
للطلب. تشمل المَعلمات المطلوبة ما يلي:
- قائمة الحقول المطلوب عرضها في الكائن
GMSPlace
، بالإضافة إلى يسمى قناع الحقل، كما هو محدد من خلالGMSPlaceProperty
إذا لم تحدد حقلاً واحدًا على الأقل في قائمة الحقول، أو إذا حذفتَ قائمة الحقول، فسيعرض الاستدعاء خطأ. - طلب البحث النصي.
يحدّد نموذج طلب البحث النصي هذا أنّ كائنات الاستجابة GMSPlace
تتضمّن اسم المكان ورقم تعريف المكان لكل عنصر GMSPlace
في البحث
نتائجك. كما يؤدي أيضًا إلى تصفية الرد لعرض الأماكن من النوع فقط
"مطعم".
Swift
// 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)
Objective-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; } } } ];
حزمة تطوير برامج الأماكن Swift لنظام التشغيل iOS (معاينة)
let restriction = RectangularLocationRestriction( 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 }
ردود البحث النصي
تعرض واجهة برمجة تطبيقات البحث النصي صفيفًا من المطابقات في
شكل
GMSPlace
مع وجود كائن GMSPlace
واحد لكل مكان مطابق.
الحصول على حالة "مفتوح"
يحتوي كائن GMSPlacesClient
على دالة عضوية تُسمى isOpenWithRequest
(isOpenRequest
في Swift وisPlaceOpenRequest
في GooglePlacesSwift) تعرِض استجابة تشير إلى ما إذا كان المكان مفتوحًا حاليًا استنادًا إلى الوقت المحدّد في الطلب.
تستخدم هذه الطريقة وسيطة واحدة من النوع GMSPlaceIsOpenWithRequest
تحتوي على:
- عنصر
GMSPlace
أو سلسلة تحدّد معرّف مكان لمزيد من المعلومات حول إنشاء كائن "المكان" باستخدام الحقول اللازمة، يمكنك الاطّلاع على تفاصيل المكان.
- عنصر اختياري
NSDate
(Obj-C) أوDate
(Swift) يحدّد الوقت الذي تريد التحقّق منه. إذا لم يتم تحديد وقت، يكون الوقت التلقائي هو الآن. - طريقة
GMSPlaceOpenStatusResponseCallback
للتعامل مع الردّ. >
تتطلّب طريقة GMSPlaceIsOpenWithRequest
ضبط الحقول التالية في كائن GMSPlace
:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
إذا لم يتم توفير هذه الحقول في عنصر "الموقع الجغرافي"، أو إذا تم ضبط رقم تعريف مكان، تستخدم الطريقة GMSPlacesClient GMSFetchPlaceRequest:
لجلب هذه الحقول.
ردّ واحد (isOpenWithRequest
)
تعرض isOpenWithRequest
عنصر GMSPlaceIsOpenResponse
يحتوي على قيمة منطقية باسم status
تشير إلى ما إذا كان النشاط التجاري مفتوحًا أو مغلقًا أو إذا كانت الحالة غير معروفة.
Language | القيمة في حال كانت مفتوحة | القيمة في حال الإغلاق | القيمة إذا كانت الحالة غير معروفة |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (معاينة) | true |
false |
nil |
الفوترة لـ isOpenWithRequest
- يتم تحصيل رسوم حقلَي
GMSPlacePropertyUTCOffsetMinutes
وGMSPlacePropertyBusinessStatus
ضمن رمز التخزين التعريفي للبيانات الأساسية. يتم تحصيل رسوم بقية ساعات العمل ضمن رمز التخزين التعريفي لميزة "تفاصيل المكان" (متقدّمة). - إذا كان
GMSPlace
العنصر يحتوي على هذه الحقول من طلب سابق، لن يتم تحصيل رسوم منك مرة أخرى.
مثال: تقديم طلب بشأن GMSPlaceIsOpenWithRequest
يوضّح المثال التالي كيفية إعداد GMSPlaceIsOpenWithRequest
داخل عنصر GMSPlace
حالي.
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 } }];
GooglePlacesSwift
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 }
المعلمات المطلوبة
استخدِم العنصر GMSPlaceSearchByTextRequest
لتحديد المَعلمات المطلوبة للبحث.
-
قائمة الحقول
حدِّد خصائص بيانات الأماكن التي تريد عرضها. اجتياز قائمة
GMSPlace
السمات التي تحدد حقول البيانات المراد عرضها. في حال حذف قناع الحقل ، سيعرض الطلب خطأ.تعتبر قوائم الحقول ممارسة جيدة في التصميم لضمان عدم طلب البيانات غير الضرورية، مما يساعد على تجنب وقت المعالجة غير الضروري رسوم الفوترة.
حدِّد حقلًا واحدًا أو أكثر من الحقول التالية:
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المعرّف فقط):
GMSPlacePropertyPlaceID
وGMSPlacePropertyName
تؤدّي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (الأساسي):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المتقدّم):
GMSPlacePropertyCurrentOpeningHours
،GMSPlacePropertySecondaryOpeningHours
،GMSPlacePropertyPhoneNumber
،GMSPlacePropertyPriceLevel
،GMSPlacePropertyRating
،GMSPlacePropertyOpeningHours
،GMSPlacePropertyUserRatingsTotal
،GMSPlacePropertyWebsite
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المفضَّل):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
السلسلة النصية المطلوب البحث عنها، على سبيل المثال: "مطعم"، "123 Main الشارع" أو "أفضل مكان للزيارة في سان فرانسيسكو".
المعلمات الاختيارية
استخدِم العنصر GMSPlaceSearchByTextRequest
لتحديد المَعلمات الاختيارية
للبحث.
includedType
تقصر النتائج على الأماكن المطابقة للنوع المحدد الذي تم تحديده بواسطة الجدول (أ). يمكن تحديد نوع واحد فقط. على سبيل المثال:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
إذا كان الخيار
true
، يجب عرض الأماكن المفتوحة فقط في وقت إرسال الطلب. في حالfalse
، إرجاع جميع الأنشطة التجارية بغض النظر عن حالة الفتح. الأماكن التي لا تحدد ساعات العمل في قاعدة بيانات أماكن Google هي في حال ضبط هذه المعلَمة علىfalse
.isStrictTypeFiltering
تُستخدَم مع مَعلمة
includeType
. عند ضبطه علىtrue
، يتم عرض الأماكن التي تتطابق فقط مع الأنواع المحدّدة التي تم تحديدها باستخدامincludeType
. عندما يكون الخيار false، يمكن أن يحتوي الردّ على أماكن غير متطابقة مع الإعدادات التلقائية. الأنواع المحددة.locationBias
لتحديد منطقة للبحث. هذا الموقع بمثابة تحيز مما يعني يمكن عرض نتائج حول الموقع المحدد، بما في ذلك نتائج خارج المنطقة المحددة.
يمكنك تحديد
locationRestriction
أوlocationBias
، ولكن ليس كليهما. يمكنك اعتبارlocationRestriction
محددًا للمنطقة التي يجب أن تظهر فيها النتائج، وlocationBias
محددًا للمنطقة التي يجب أن تكون النتائج قريبة منها ولكن يمكن أن تكون خارج المنطقة.حدِّد المنطقة على أنّها إطار عرض مستطيل أو دائرة.
يتم تحديد الدائرة بنقطة المركز ونصف القطر بالمتر. النطاق الجغرافي يجب أن تتراوح بين 0.0 و50000.0 (ضمنًا). نصف القطر الافتراضي هو 0.0. على سبيل المثال:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
المستطيل هو إطار عرض لخطوط الطول والعرض، ويتم تمثيله في صورة اثنين بشكل قطري عكس النقاط المنخفضة والمرتفعة. تشير النقطة المنخفضة إلى الجنوب الغربي زاوية المستطيل، وتمثل النقطة المرتفعة الشمال الشرقي زاوية المستطيل.
يُعدّ إطار العرض منطقة مغلقة، ما يعني أنّه يتضمّن حدوده. حدود خط العرض يجب أن تتراوح درجة الحرارة بين -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
، نطاق خط العرض فارغ.
- إذا كان
locationRestriction
تُستخدَم لتحديد منطقة للبحث. النتائج خارج المنطقة المحدّدة ليست عاد. حدِّد المنطقة على أنّها إطار عرض مستطيل. الاطّلاع على الوصف من
locationBias
للحصول على معلومات حول تحديد إطار العرض.يمكنك تحديد
locationRestriction
أوlocationBias
، ولكن ليس كليهما. يمكنك اعتبارlocationRestriction
محددًا للمنطقة التي يجب أن تظهر فيها النتائج، وlocationBias
محددًا للمنطقة التي يجب أن تكون النتائج قريبة منها ولكن يمكن أن تكون خارج المنطقة.-
maxResultCount
لتحديد الحد الأقصى لعدد نتائج الأماكن المطلوب عرضها. يجب أن تتراوح القيمة بين 1 و20 (القيمة التلقائية) بما في ذلك الرقمان.
minRating
يقصر النتائج على من يكون متوسط تقييم المستخدمين له أكبر من أو مساوٍ لهذا الحد. يجب أن تتراوح القيم بين 0.0 و5.0 (شاملة) وبصعد 0.5. على سبيل المثال: 0، 0.5، 1.0، ... ، 5.0 ضمنًا. القيم هي إلى أقرب 0.5. على سبيل المثال، القيمة 0.6 تزيل جميع من النتائج ذات تقييم أقل من 1.0.
-
priceLevels
يمكنك حصر البحث على الأماكن التي تم وضع علامة عليها عند مستويات أسعار معيّنة. يكون الخيار التلقائي هو اختيار جميع مستويات الأسعار.
حدد صفيفًا مكونًا من واحدة أو أكثر من القيم المحددة بواسطة
PriceLevel
على سبيل المثال:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
لتحديد كيفية ترتيب النتائج في الرد استنادًا إلى نوع استعلام:
- بالنسبة إلى طلب بحث فئوي، مثل "مطاعم في مدينة دبي"، يكون الخيار
.relevance
(ترتيب النتائج حسب مدى صلة البحث) هو الإعداد التلقائي. يمكنك ضبطrankPreference
على.relevance
أو.distance
(ترتيب النتائج حسب المسافة) - بالنسبة إلى طلب البحث غير الفئوي مثل "Mountain View, CA"، ننصح
عند ترك
rankPreference
بدون ضبط.
- بالنسبة إلى طلب بحث فئوي، مثل "مطاعم في مدينة دبي"، يكون الخيار
regionCode
رمز المنطقة المستخدَم لتنسيق الاستجابة، ويتم تحديده على أنّه قيمة رمز CLDR المكوّن من حرفَين. يمكن أن يكون لهذه المعلمة أيضًا تأثير تحيز في نتائج البحث. لا تتوفّر قيمة تلقائية.
إذا تطابق اسم البلد في حقل العنوان في الرد مع كود المنطقة، فسيتم حذف رمز البلد من العنوان.
تتطابق معظم رموز CLDR مع رموز ISO 3166-1، باستثناء بعض الاستثناءات البارزة. على سبيل المثال، رمز المستوى الأعلى للمنطقة المحدودة (ccTLD) في المملكة المتحدة هو "uk" (.co.uk)، بينما رمزه وفقًا لمعيار ISO 3166-1 هو "gb" (من الناحية الفنية لجهة المملكة المتحدة لبريطانيا العظمى وأيرلندا الشمالية). ويمكن أن تؤثّر المَعلمة في النتائج استنادًا إلى القانون الساري.
عرض عمليات تحديد المصدر في تطبيقك
عندما يعرض تطبيقك معلومات تم الحصول عليها من
GMSPlacesClient
،
مثل الصور والمراجعات، يجب أن يعرض التطبيق أيضًا معلومات المساهمين المطلوبة.
على سبيل المثال، السمة reviews
للكائن GMSPlacesClient
يحتوي على صفيف من خمسة
GMSPlaceReview
الأخرى. يمكن أن يحتوي كل عنصر GMSPlaceReview
على السمات وسمات المؤلف.
إذا عرضت المراجعة في تطبيقك، يجب أيضًا عرض أي مصدر أو مؤلف.
الإحالة.
لمزيد من المعلومات، راجع الوثائق المتعلقة الإحالة.