يمكن استخدام ميزة "الإكمال التلقائي لطلبات البحث" (الإصدار القديم) لتقديم عبارة بحث مقترَحة لعمليات البحث الجغرافية المستندة إلى النصوص، وذلك من خلال عرض عبارات بحث مقترَحة أثناء الكتابة.
طلبات ميزة "الإكمال التلقائي للبحث" (الإصدار القديم)
تُعدّ ميزة "الإكمال التلقائي لطلبات البحث" (الإصدار القديم) جزءًا من Places API (الإصدار القديم)، وتتشارك مفتاح واجهة برمجة التطبيقات والحصة مع Places API (الإصدار القديم).
تتيح لك ميزة "الإكمال التلقائي لطلبات البحث" (الإصدار القديم) إضافة عبارات بحث مقترَحة جغرافية إلى تطبيقك أثناء التنقل. بدلاً من البحث عن موقع جغرافي محدّد، يمكن للمستخدم كتابة طلب بحث حسب الفئة، مثل "بيتزا بالقرب من القاهرة"، وستردّ الخدمة بقائمة من طلبات البحث المقترَحة التي تتطابق مع السلسلة. بما أنّ ميزة "الإكمال التلقائي لطلب البحث" (الإصدار القديم) يمكنها مطابقة الكلمات الكاملة والسلاسل الفرعية، يمكن للتطبيقات إرسال طلبات البحث أثناء كتابة المستخدم لتقديم توقعات فورية.
طلب "الإكمال التلقائي للاستعلام" (الإصدار القديم) هو عنوان URL يستخدم HTTP على النحو التالي:
https://maps.googleapis.com/maps/api/place/queryautocomplete/output?parameters
حيث يمكن أن تكون قيمة output إما json أو xml.
يجب توفّر مَعلمات معيّنة لبدء طلب "الإكمال التلقائي للبحث" (الإصدار القديم).
وكما هو معتاد في عناوين URL، يتم الفصل بين جميع المَعلمات باستخدام رمز العطف اللاتيني (&). في ما يلي قائمة بالمعلمات والقيم المحتملة لها.
المعلمات المطلوبة
-
إدخال
سلسلة النص المطلوب البحث عنها. ستعرض خدمة "الإكمال التلقائي للأماكن" نتائج مطابقة محتملة استنادًا إلى هذه السلسلة، كما سترتّب النتائج حسب مدى صلتها بطلب البحث.
المعلمات الاختيارية
-
language
اللغة التي سيتم عرض النتائج بها
- اطّلِع على قائمة اللغات المتاحة. تُحدّث Google غالبًا اللغات المتوافقة، لذا قد لا تكون هذه القائمة شاملة.
-
في حال عدم توفير
language، تحاول واجهة برمجة التطبيقات استخدام اللغة المفضّلة كما هو محدّد في العنوانAccept-Language. - تبذل واجهة برمجة التطبيقات قصارى جهدها لتوفير عنوان شارع يمكن قراءته من قِبل المستخدمين والسكان المحليين. لتحقيق هذا الهدف، تعرض الخدمة عناوين الشوارع باللغة المحلية، مع ترجمتها إلى نص يمكن للمستخدم قراءته إذا لزم الأمر، مع مراعاة اللغة المفضّلة. ويتم عرض جميع العناوين الأخرى باللغة المفضّلة. يتم عرض جميع مكونات العنوان باللغة نفسها، والتي يتم اختيارها من المكون الأول.
- إذا لم يتوفّر اسم باللغة المفضّلة، تستخدم واجهة برمجة التطبيقات أقرب نتيجة مطابِقة.
- للغة المفضّلة تأثير بسيط على مجموعة النتائج التي تختار واجهة برمجة التطبيقات عرضها، وعلى ترتيب عرضها. يفسّر برنامج الترميز الجغرافي الاختصارات بشكل مختلف حسب اللغة، مثل اختصارات أنواع الشوارع أو المرادفات التي قد تكون صالحة في لغة ما ولكن ليس في لغة أخرى. على سبيل المثال، utca وtér هما كلمتان مترادفتان لكلمة "شارع" باللغة الهنغارية.
-
الموقع
تحدّد هذه السمة نقطة، على شكل إحداثيات
latitude,longitude، يتم البحث حولها. تستخدم خدمة "الأماكن" الموقع الجغرافي لتحديد النتائج المفضّلة في البحث، أي النتائج التي تقع في المنطقة المحدّدة بواسطةlocationوradius، مع العلم أنّه قد يتم عرض نتائج خارج المنطقة المحدّدة.قد يتم تجاهل المَعلمةlocationإذا كانqueryيحتوي على موقع جغرافي محدّد، مثلMarket in Barcelona. قد يؤدي استخدام علامات الاقتباس حول طلب البحث أيضًا إلى التأثير في الأهمية الممنوحة لكل منlocationوradius. -
offset
موضع آخر حرف تستخدمه الخدمة لمطابقة التوقعات في عبارة الإدخال على سبيل المثال، إذا كان الإدخال هو
Googleوكان الإزاحة 3، ستطابق الخدمةGoo. تتم مطابقة السلسلة المحدّدة بواسطة الإزاحة مع الكلمة الأولى فقط في عبارة البحث. على سبيل المثال، إذا كانت عبارة الإدخال هيGoogle abcوكان الإزاحة 3، ستحاول الخدمة إجراء مطابقة معGoo abc. في حال عدم توفير إزاحة، ستستخدم الخدمة المدة بأكملها. يجب بشكل عام ضبط الإزاحة على موضع علامة الإقحام الخاصة بالنص. -
نطاق جغرافي
تحدّد هذه السمة المسافة (بالمتر) التي يجب أن تظهر ضمنها نتائج الأماكن. يمكنك تحسين النتائج لتناسب دائرة محدّدة من خلال تمرير المَعلمتَين
locationوradius. سيؤدي ذلك إلى توجيه خدمة "الأماكن" إلى تفضيل عرض النتائج ضمن تلك الدائرة، ولكن قد يستمر عرض النتائج خارج المنطقة المحدّدة.سيتم تلقائيًا حصر نصف القطر بقيمة قصوى استنادًا إلى نوع البحث والمَعلمات الأخرى.
- الإكمال التلقائي: 50,000 متر
-
البحث في الجوار:
- مع
keywordأوname: 50,000 متر -
بدون
keywordأوname-
ما يصل إلى 50,000 متر، يتم تعديلها ديناميكيًا استنادًا إلى كثافة المنطقة، بغض النظر عن المَعلمة
rankby. -
عند استخدام
rankby=distance، لن يتم قبول مَعلمة نصف القطر، وسيؤدي ذلك إلى ظهورINVALID_REQUEST.
-
ما يصل إلى 50,000 متر، يتم تعديلها ديناميكيًا استنادًا إلى كثافة المنطقة، بغض النظر عن المَعلمة
- مع
- ميزة "الإكمال التلقائي للبحث": 50,000 متر
- البحث النصي: 50,000 متر
أمثلة على ميزة "الإكمال التلقائي للبحث" (الإصدار القديم)
عنوان URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'طلب "بيتزا بالقرب من بار"، مع نتائج باللغة الفرنسية:
عنوان URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &language=fr &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&language=fr&key=YOUR_API_KEY'يُرجى العِلم أنّه عليك استبدال مفتاح واجهة برمجة التطبيقات في هذه الأمثلة بمفتاحك الخاص.
استجابة ميزة "الإكمال التلقائي للبحث" (الإصدار القديم)
يتم عرض استجابات ميزة "الإكمال التلقائي للبحث" (الإصدار القديم) بالتنسيق المحدّد بواسطة العلامة output ضمن مسار طلب عنوان URL. يتم عرض النتائج أدناه
لطلب بحث يتضمّن المَعلمات التالية:
عنوان URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'JSON
{ "predictions": [ { "description": "pizza near Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris" }, { "offset": 18, "value": "France" }, ], }, { "description": "pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Pari Chowk" }, { "offset": 23, "value": "NRI City" }, { "offset": 33, "value": "Omega II" }, { "offset": 43, "value": "Noida" }, { "offset": 50, "value": "Uttar Pradesh" }, { "offset": 65, "value": "India" }, ], }, { "description": "pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 22 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "secondary_text_matched_substrings": [{ "length": 3, "offset": 16 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Disneyland Park" }, { "offset": 28, "value": "Disneyland Drive" }, { "offset": 46, "value": "Anaheim" }, { "offset": 55, "value": "CA" }, { "offset": 59, "value": "USA" }, ], }, { "description": "pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 36 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 30 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Cathédrale Notre-Dame de Paris" }, { "offset": 43, "value": "Parvis Notre-Dame - place Jean-Paul-II" }, { "offset": 83, "value": "Paris" }, { "offset": 90, "value": "France" }, ], }, { "description": "pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris Beauvais Airport" }, { "offset": 35, "value": "Route de l'Aéroport" }, { "offset": 56, "value": "Tillé" }, { "offset": 63, "value": "France" }, ], }, ], "status": "OK", }
XML
<AutocompletionResponse> <status>OK</status> <prediction> <description>pizza near Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris</value> <offset>11</offset> </term> <term> <value>France</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Pari Chowk</value> <offset>11</offset> </term> <term> <value>NRI City</value> <offset>23</offset> </term> <term> <value>Omega II</value> <offset>33</offset> </term> <term> <value>Noida</value> <offset>43</offset> </term> <term> <value>Uttar Pradesh</value> <offset>50</offset> </term> <term> <value>India</value> <offset>65</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Disneyland Park</value> <offset>11</offset> </term> <term> <value>Disneyland Drive</value> <offset>28</offset> </term> <term> <value>Anaheim</value> <offset>46</offset> </term> <term> <value>CA</value> <offset>55</offset> </term> <term> <value>USA</value> <offset>59</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>22</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>16</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Cathédrale Notre-Dame de Paris</value> <offset>11</offset> </term> <term> <value>Parvis Notre-Dame - place Jean-Paul-II</value> <offset>43</offset> </term> <term> <value>Paris</value> <offset>83</offset> </term> <term> <value>France</value> <offset>90</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>36</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>30</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris Beauvais Airport</value> <offset>11</offset> </term> <term> <value>Route de l'Aéroport</value> <offset>35</offset> </term> <term> <value>Tillé</value> <offset>56</offset> </term> <term> <value>France</value> <offset>63</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
عندما تعرض خدمة "الأماكن" نتائج JSON من عملية بحث، تضعها ضمن مصفوفة predictions. حتى إذا لم تعرض الخدمة أي نتائج (مثلاً، إذا كان location بعيدًا)، ستظل تعرض مصفوفة predictions فارغة. تتكوّن ردود XML من صفر أو أكثر من عناصر <prediction>.
PlacesQueryAutocompleteResponse
| الحقل | مطلوب | النوع | الوصف |
|---|---|---|---|
|
مطلوب | Array<PlaceAutocompletePrediction> |
يحتوي على مصفوفة من عبارات البحث المقترَحة. راجِع PlaceAutocompletePrediction للحصول على مزيد من المعلومات. |
|
مطلوب | PlacesAutocompleteStatus |
يحتوي على حالة الطلب، وقد يتضمّن معلومات تصحيح الأخطاء لمساعدتك في معرفة سبب تعذُّر تلبية الطلب. لمزيد من المعلومات، يُرجى الاطّلاع على PlacesAutocompleteStatus. |
|
اختياري | سلسلة |
عندما تعرض الخدمة رمز حالة غير |
|
اختياري | Array<string> |
عندما تعرض الخدمة معلومات إضافية حول مواصفات الطلب، قد يكون هناك حقل |
PlacesAutocompleteStatus
رموز الحالة التي تعرضها الخدمة
OKللإشارة إلى أنّ طلب البيانات من واجهة برمجة التطبيقات تمّ بنجاح.-
ZERO_RESULTS، ما يشير إلى أنّ البحث تم بنجاح ولكن لم يتم عرض أي نتائج. قد يحدث ذلك إذا تم تمرير حدود إلى عملية البحث في موقع جغرافي بعيد. -
INVALID_REQUEST، ما يشير إلى أنّ طلب البيانات من واجهة برمجة التطبيقات غير صالح، ويعود ذلك عادةً إلى عدم توفّر المَعلمةinput. -
OVER_QUERY_LIMITالتي تشير إلى أي مما يلي:- لقد تجاوزت الحدّ الأقصى لعدد الطلبات في الثانية.
- لم يتم تفعيل الفوترة في حسابك.
- تم تجاوز رصيد بقيمة 200 دولار أمريكي شهريًا أو الحد الأقصى للاستخدام الذي فرضته على نفسك.
- لم تعُد طريقة الدفع المقدَّمة صالحة (على سبيل المثال، انتهت صلاحية بطاقة ائتمان).
-
REQUEST_DENIEDيشير إلى أنّه تم رفض طلبك، ويكون السبب عادةً أحد ما يلي:- لا يتضمّن الطلب مفتاح واجهة برمجة التطبيقات.
- المَعلمة
keyغير صالحة.
-
UNKNOWN_ERRORللإشارة إلى حدوث خطأ غير معروف.
عندما تعرض خدمة "أماكن Google" نتائج JSON من عملية بحث، فإنّها تضعها ضمن مصفوفة predictions. حتى إذا لم تعرض الخدمة أي نتائج (مثلما يحدث إذا كان location بعيدًا)، ستعرض مصفوفة predictions فارغة. تتألف ردود XML من صفر أو أكثر من عناصر <prediction>.
PlaceAutocompletePrediction
| الحقل | مطلوب | النوع | الوصف |
|---|---|---|---|
|
مطلوب | سلسلة |
تحتوي على الاسم الذي يمكن للمستخدم قراءته للنتيجة التي تم إرجاعها. بالنسبة إلى نتائج |
|
مطلوب | Array<PlaceAutocompleteMatchedSubstring> |
قائمة بالسلاسل الفرعية التي تصف موضع العبارة المُدخَلة في نص نتيجة التوقّع، حتى يمكن تمييز العبارة إذا أردت ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على PlaceAutocompleteMatchedSubstring. |
|
مطلوب | PlaceAutocompleteStructuredFormat |
توفّر هذه السمة نصًا منسّقًا مسبقًا يمكن عرضه في نتائج الإكمال التلقائي. يجب قراءة هذا المحتوى كما هو، ويُرجى عدم تحليل العنوان المنسّق آليًا. لمزيد من المعلومات، يُرجى الاطّلاع على PlaceAutocompleteStructuredFormat. |
|
مطلوب | Array<PlaceAutocompleteTerm> |
يحتوي على مصفوفة من المصطلحات التي تحدّد كل قسم من الوصف الذي تم عرضه (عادةً ما ينتهي قسم الوصف بفاصلة). يحتوي كل إدخال في المصفوفة على حقل لمزيد من المعلومات، يُرجى الاطّلاع على PlaceAutocompleteTerm. |
|
اختياري | عدد صحيح |
المسافة المستقيمة بالمتر من نقطة الانطلاق لا يتم عرض هذا الحقل إلا للطلبات التي يتم إجراؤها باستخدام |
|
اختياري | سلسلة |
معرّف نصي يحدّد مكانًا بشكل فريد. لاسترداد معلومات حول المكان، مرِّر هذا المعرّف في الحقل placeId ضمن طلب بيانات من واجهة برمجة التطبيقات Places API. لمزيد من المعلومات حول معرّفات الأماكن، راجِع النظرة العامة حول معرّفات الأماكن. |
|
اختياري | سلسلة |
تم إيقاف
راجِع place_id. |
|
اختياري | Array<string> |
تحتوي على مصفوفة من الأنواع التي تنطبق على هذا المكان. على سبيل المثال:
|
PlaceAutocompleteMatchedSubstring
| الحقل | مطلوب | النوع | الوصف |
|---|---|---|---|
|
مطلوب | الرقم |
طول السلسلة الفرعية المطابقة في نص نتيجة التوقّع |
|
مطلوب | الرقم |
تمثّل هذه السمة الموقع الجغرافي لبداية السلسلة الفرعية المطابقة في نص نتيجة التوقّع. |
PlaceAutocompleteStructuredFormat
| الحقل | مطلوب | النوع | الوصف |
|---|---|---|---|
|
مطلوب | سلسلة |
يحتوي على النص الرئيسي لتوقّع، وهو عادةً اسم المكان. |
|
مطلوب | Array<PlaceAutocompleteMatchedSubstring> |
يحتوي على مصفوفة تتضمّن القيمة لمزيد من المعلومات، يُرجى الاطّلاع على PlaceAutocompleteMatchedSubstring. |
|
اختياري | سلسلة |
تحتوي هذه السمة على النص الثانوي الخاص بنتيجة البحث المتوقّعة، والذي يمثّل عادةً الموقع الجغرافي للمكان. |
|
اختياري | Array<PlaceAutocompleteMatchedSubstring> |
يحتوي على مصفوفة تتضمّن القيمة لمزيد من المعلومات، يُرجى الاطّلاع على PlaceAutocompleteMatchedSubstring. |
PlaceAutocompleteTerm
| الحقل | مطلوب | النوع | الوصف |
|---|---|---|---|
|
مطلوب | الرقم |
تحدّد هذه السمة موضع بدء المصطلح في الوصف، ويتم قياسه بأحرف Unicode. |
|
مطلوب | سلسلة |
تمثّل هذه السمة نص المصطلح. |