تکمیل خودکار جا (قدیمی)
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
توسعهدهندگان منطقه اقتصادی اروپا (EEA)
توجه: کتابخانههای
سمت سرور
این صفحه کتابخانه سمت کارخواه را که با
Maps JavaScript API دردسترس است شرح میدهد. اگر میخواهید با
سرویس وب Places API در سرورتان کار کنید، به
Node.js Client for Google Maps Services نگاهی بیندازید. صفحه موجود در
آن پیوند همچنین Java Client،
Python Client، و Go Client را برای «سرویسهای Google Maps» معرفی میکند.
مقدمه
«تکمیل خودکار» یکیاز ویژگیهای کتابخانه «جاها» در
Maps JavaScript API است. میتوانید از تکمیل خودکار استفاده کنید تا به برنامههایتان رفتار جستجوی پیشتایپ فیلد جستجوی Google Maps را بدهید.
سرویس تکمیل خودکار میتواند با کلمات کامل و رشتههای فرعی مطابقت داشته باشد و نام مکانها، نشانیها، و کدهای Plus را حل کند. بنابراین، برنامهها میتوانند همزمان با تایپ کردن کاربر پُرسمان ارسال کنند تا
پیشبینیهای مکان را درلحظه ارائه دهند. همانطور که Places API تعریف کرده است،
«مکان» میتواند یک مؤسسه، مکان جغرافیایی، یا نقطه
موردعلاقه برجسته باشد.
درحال شروع کردن
قبلاز استفاده از کتابخانه «جاها» در Maps JavaScript API، ابتدا بررسی کنید
که Places API در کنسول Google Cloud، در همان پروژهای که برای Maps JavaScript API
راهاندازی کردهاید، فعال باشد.
برای مشاهده فهرست میاناهای برنامهسازی کاربردی فعالشده:
روی دکمه انتخاب پروژه کلیک کنید، سپس همان پروژهای را که برای Maps JavaScript API راهاندازی کردهاید انتخاب کنید و روی باز کردن کلیک کنید.
از فهرست میاناهای برنامهسازی کاربردی در داشبورد،
Places API را پیدا کنید.
اگر API را در فهرست میبینید، همه تنظیمات انجام شده است. اما این پروژه در وضعیت «قدیمی» است.
برای اطلاعات بیشتر درباره مرحله «قدیمی»
و نحوه انتقال از «قدیمی» به سرویسهای جدیدتر، محصولات و ویژگیهای قدیمی را ببینید.
یک استثنا برای ابزارههای تکمیل خودکار
و SearchBox
وجود دارد که هنوز بهعنوان محصول GA در Places API (جدید) دردسترس نیستند.
بار کردن کتابخانه
سرویس «مکانها» کتابخانهای مستقل است که از کد اصلی
Maps JavaScript API جدا است. برای استفاده از ویژگیهای موجود
در این کتابخانه، ابتدا باید آن را بااستفاده از پارامتر libraries
در نشانی وب راهانداز Maps API بار کنید:
این میانای برنامهسازی کاربردی دو نوع ابزاره تکمیل خودکار ارائه میدهد که میتوانید آنها را بهترتیب بااستفاده از کلاسهای Autocomplete و SearchBox اضافه کنید.
علاوهبراین، میتوانید از کلاس AutocompleteService برای بازیابی نتایج تکمیل خودکار بهصورت برنامهنویسیشده استفاده کنید (به مرجع Maps JavaScript API مراجعه کنید:
کلاس AutocompleteService).
در زیر خلاصهای از کلاسهای دردسترس آمده است:
Autocomplete فیلد ورودی نوشتاری به صفحه وب شما اضافه میکند،
و آن فیلد را برای ورودیهای نویسه نظارت میکند. وقتی کاربر نوشتار وارد میکند،
تکمیل خودکار پیشبینیهای مکان را بهصورت
فهرست کرکرهای برمیگرداند. وقتی کاربر مکانی را از فهرست انتخاب میکند، اطلاعات
مربوط به آن مکان به شیء تکمیل خودکار برگردانده میشود و میتواند
توسط برنامه شما بازیابی شود. جزئیات را در زیر ببینید.
شکل ۱: فیلد نوشتار تکمیل خودکار و فهرست انتخابشکل ۲: فرم نشانی تکمیلشده
SearchBox فیلد ورودی نوشتار را به صفحه وب شما اضافه میکند،
تقریباً به همان روش Autocomplete. تفاوتها به شرح زیر است:
تفاوت اصلی در نتایجی است که در فهرست انتخاب ظاهر میشود. SearchBox
فهرست گستردهای از پیشبینیها را ارائه میدهد که میتواند شامل مکانها (همانطور که توسط
Places API تعریف شده است) بهعلاوه عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر
«پیتزا در نیو» را وارد کند، فهرست انتخاب ممکن است شامل عبارت
«پیتزا در نیویورک، نیویورک» و همچنین نامهای پیتزافروشیهای
مختلف باشد.
SearchBox گزینههای کمتری نسبت به
Autocomplete برای محدود کردن جستجو ارائه میدهد. در حالت اول، میتوانید جستجو را بهسمت LatLngBounds خاصی متمایل کنید. در
مورد دوم، میتوانید جستجو را به کشور خاص و انواع مکانهای خاص محدود کنید،
و همچنین مرزها را تنظیم کنید. برای اطلاعات بیشتر،
زیر را ببینید.
شکل ۳: SearchBox عبارتهای جستجو و پیشبینیهای مکان را ارائه میدهد.
جزئیات را در زیر ببینید.
میتوانید شیء
AutocompleteService ایجاد کنید تا
پیشبینیها را بهصورت برنامهنویسیشده بازیابی کنید. برای بازیابی مکانهای منطبق، با getPlacePredictions() تماس بگیرید، یا برای بازیابی مکانهای منطبق بهعلاوه عبارتهای جستجوی پیشنهادی، با getQueryPredictions() تماس بگیرید.
توجه: AutocompleteService هیچ کنترل میانای کاربری اضافه نمیکند.
درعوض، روشهای بالا آرایهای از اشیای پیشبینی را برمیگردانند. هر
شیء پیشبینی حاوی نوشتار پیشبینی و همچنین اطلاعات مرجع
و جزئیات نحوه مطابقت نتیجه با ورودی کاربر است. جزئیات را در
زیر ببینید.
افزودن ابزاره «تکمیل خودکار»
ابزاره Autocomplete
یک فیلد ورودی نوشتار در صفحه وب شما ایجاد میکند، پیشبینیهای مکانها را در فهرست انتخاب واسط کاربر ارائه میدهد، و جزئیات مکان را در پاسخ به درخواست getPlace() برمیگرداند. هر ورودی در
فهرست انتخاب با یک مکان (همانطور که توسط Places API تعریف شده است) مطابقت دارد.
سازنده Autocomplete دو آرگومان میگیرد:
عنصر HTML input از نوع text. این فیلد ورودی است که سرویس تکمیل خودکار
آن را نظارت میکند و نتایجش را به آن پیوست میکند.
یک متغیر مستقل اختیاری AutocompleteOptions که میتواند
حاوی ویژگیهای زیر باشد:
آرایهای از دادههای fields که باید در
پاسخ Place Details برای PlaceResult انتخابشده کاربر گنجانده شود. اگر
ویژگی تنظیم نشده باشد یا اگر ['ALL'] ارسال شود، همه فیلدهای دردسترس برگردانده میشوند و
صورتحساب برای آنها صادر میشود (این کار برای استقرار تولید
توصیه نمیشود). برای مشاهده فهرست فیلدها، PlaceResult را ببینید.
آرایهای از types که
نوع صریح یا مجموعه نوع را مشخص میکند، همانطور که در انواع پشتیبانیشده فهرست شده است. اگر نوعی مشخص نشده باشد، همه انواع
برگردانده میشوند.
bounds یک شیء google.maps.LatLngBounds است که
منطقه جستجوی مکانها را مشخص میکند. نتایج به مکانهای موجود در این مرزها متمایل است، اما به آنها محدود نمیشود.
strictBounds یک boolean است
که مشخص میکند آیا API باید فقط مکانهایی را برگرداند که دقیقاً در منطقه تعریفشده
توسط bounds دادهشده قرار دارند یا نه. میانای برنامهسازی کاربردی نتایج خارج از این منطقه را برنمیگرداند، حتی اگر با ورودی کاربر مطابقت داشته باشند.
از componentRestrictions میتوان برای محدود کردن نتایج به
گروههای خاص استفاده کرد. میتوانید از componentRestrictions برای فیلتر کردن براساس حداکثر ۵ کشور استفاده کنید. کشورها باید بهصورت کد کشور دوحرفی سازگار با ISO 3166-1 Alpha-2 ارسال شوند. چند کشور باید بهصورت فهرستی از کدهای کشور ارسال شوند.
توجه: اگر نتایج غیرمنتظرهای با کد کشور دریافت کردید، بررسی کنید که از کدی استفاده میکنید که شامل کشورها، قلمروهای وابسته، و مناطق ویژه جغرافیایی موردنظر شما باشد. میتوانید اطلاعات کد را در
ویکیپدیا: فهرست کدهای کشور
ISO 3166 یا پلاتفرم مرور آنلاین
ISO پیدا کنید.
از placeIdOnly میتوان برای دستور دادن به ابزارک Autocomplete برای بازیابی فقط «شناسههای مکان» استفاده کرد. هنگام فراخوانی
getPlace() در شیء Autocomplete،
PlaceResult دردسترس قرارگرفته فقط ویژگیهای place id،
types، و name را تنظیم خواهد کرد. میتوانید از شناسه مکان برگرداندهشده برای تماس با سرویسهای «مکانها»، «زمینکدیابی»، «مسیرها»، یا «ماتریس فاصله» استفاده کنید.
محدود کردن پیشبینیهای «تکمیل خودکار»
بهطور پیشفرض، «تکمیل خودکار جا» همه انواع مکان را ارائه میدهد، برای پیشبینیهای نزدیک به مکان کاربر سوگیری دارد، و همه فیلدهای داده دردسترس را برای مکان انتخابی کاربر واکشی میکند. گزینههای «تکمیل خودکار جا» را تنظیم کنید تا پیشبینیهای مرتبطتری براساس مورد استفاده شما ارائه شود.
تنظیم گزینهها در ساختار
سازنده Autocomplete پارامتر AutocompleteOptions را برای تنظیم محدودیتها در زمان ایجاد ابزاره میپذیرد. مثال زیر گزینههای bounds، componentRestrictions، و types را برای درخواست مکانهای نوع establishment تنظیم میکند، مکانهای داخل منطقه جغرافیایی مشخصشده را ترجیح میدهد، و پیشبینیها را فقط به مکانهای داخل ایالات متحده محدود میکند. تنظیم
گزینه fields مشخص میکند چه اطلاعاتی درباره مکان انتخابی کاربر برگردانده شود.
برای تغییر دادن مقدار گزینه برای ابزاره موجود، setOptions() را فراخوانی کنید.
TypeScript
constcenter={lat:50.064192,lng:-130.605469};// Create a bounding box with sides ~10km away from the center pointconstdefaultBounds={north:center.lat+0.1,south:center.lat-0.1,east:center.lng+0.1,west:center.lng-0.1,};constinput=document.getElementById("pac-input")asHTMLInputElement;constoptions={bounds:defaultBounds,componentRestrictions:{country:"us"},fields:["address_components","geometry","icon","name"],strictBounds:false,};constautocomplete=newgoogle.maps.places.Autocomplete(input,options);
constcenter={lat:50.064192,lng:-130.605469};// Create a bounding box with sides ~10km away from the center pointconstdefaultBounds={north:center.lat+0.1,south:center.lat-0.1,east:center.lng+0.1,west:center.lng-0.1,};constinput=document.getElementById("pac-input");constoptions={bounds:defaultBounds,componentRestrictions:{country:"us"},fields:["address_components","geometry","icon","name"],strictBounds:false,};constautocomplete=newgoogle.maps.places.Autocomplete(input,options);
فیلدهای داده را مشخص کنید تا برای شناسههای یکتای کالا در «دادههای مکانها» که نیاز ندارید صورتحساب دریافت نکنید. ویژگی fields را در
AutocompleteOptions که به سازنده ابزاره ارسال میشود اضافه کنید، همانطور که در مثال قبلی
نشان داده شده است، یا setFields() را در شیء Autocomplete موجود فراخوانی کنید.
گزینه strictBounds را تنظیم کنید تا نتایج را به مرزهای فعلی محدود کنید، چه براساس ناحیه نمایش نقشه باشد یا مرزهای مستطیلی.
autocomplete.setOptions({strictBounds:true});
محدود کردن پیشبینیها به کشوری خاص
از گزینه componentRestrictions استفاده کنید یا با setComponentRestrictions() تماس بگیرید تا
جستجوی تکمیل خودکار را به مجموعه خاصی از حداکثر پنج کشور محدود کنید.
از گزینه types استفاده کنید یا setTypes() را فراخوانی کنید تا
پیشبینیها را به انواع مکانهای خاص محدود کنید. این محدودیت نوع یا مجموعهای از انواع را مشخص میکند،
همانطور که در انواع مکان فهرست شده است.
اگر محدودیتی مشخص نشده باشد، همه انواع برگردانده میشوند.
برای مقدار گزینه types یا مقدار ارسالشده به setTypes()، میتوانید یکی از موارد زیر را مشخص کنید:
وقتی کاربر مکانی را از پیشبینیهای پیوستشده به فیلد نوشتاری تکمیل خودکار انتخاب میکند،
سرویس رویداد place_changed را فعال میکند. برای دریافت جزئیات
مکان:
یک گرداننده رویداد برای رویداد place_changed ایجاد کنید و addListener() را در شیء Autocomplete فراخوانی کنید تا گرداننده اضافه شود.
Autocomplete.getPlace() را در شیء Autocomplete فراخوانی کنید تا شیء PlaceResult را بازیابی کنید، سپس میتوانید از آن برای دریافت اطلاعات بیشتر درباره مکان انتخابشده استفاده کنید.
بهطور پیشفرض، وقتی کاربر مکانی را انتخاب میکند، تکمیل خودکار همه فیلدهای داده دردسترس را برای مکان انتخابشده برمیگرداند و صورتحساب شما براساس آن صادر میشود.
از Autocomplete.setFields()
برای مشخص کردن فیلدهای داده مکان برای برگرداندن استفاده کنید. درباره شیء
PlaceResult، ازجمله فهرست فیلدهای داده مکان که
میتوانید درخواست کنید، بیشتر بخوانید. برای اینکه هزینه دادههایی را که نیاز ندارید پرداخت نکنید، حتماً از Autocomplete.setFields() برای مشخص کردن
فقط دادههای مکانی که استفاده خواهید کرد استفاده کنید.
خصوصیت name حاوی
description از پیشبینیهای «تکمیل خودکار مکانها» است. میتوانید درباره
description در
سند
تکمیل خودکار جاها بیشتر بخوانید.
برای فرمهای نشانی، دریافت نشانی در قالب ساختاریافته مفید است. برای
برگرداندن نشانی ساختاریافته برای مکان انتخابشده،
Autocomplete.setFields()
را فراخوانی کنید و فیلد address_components را مشخص کنید.
مثال زیر از تکمیل خودکار برای پر کردن فیلدها در فرم نشانی استفاده میکند.
TypeScript
functionfillInAddress(){// Get the place details from the autocomplete object.constplace=autocomplete.getPlace();letaddress1="";letpostcode="";// Get each component of the address from the place details,// and then fill-in the corresponding field on the form.// place.address_components are google.maps.GeocoderAddressComponent objects// which are documented at http://goo.gle/3l5i5Mrfor(constcomponentofplace.address_componentsasgoogle.maps.GeocoderAddressComponent[]){// @ts-ignore remove once typings fixedconstcomponentType=component.types[0];switch(componentType){case"street_number":{address1=`${component.long_name}${address1}`;break;}case"route":{address1+=component.short_name;break;}case"postal_code":{postcode=`${component.long_name}${postcode}`;break;}case"postal_code_suffix":{postcode=`${postcode}-${component.long_name}`;break;}case"locality":(document.querySelector("#locality")asHTMLInputElement).value=component.long_name;break;case"administrative_area_level_1":{(document.querySelector("#state")asHTMLInputElement).value=component.short_name;break;}case"country":(document.querySelector("#country")asHTMLInputElement).value=component.long_name;break;}}address1Field.value=address1;postalField.value=postcode;// After filling the form with address components from the Autocomplete// prediction, set cursor focus on the second address line to encourage// entry of subpremise information such as apartment, unit, or floor number.address2Field.focus();}
functionfillInAddress(){// Get the place details from the autocomplete object.constplace=autocomplete.getPlace();letaddress1="";letpostcode="";// Get each component of the address from the place details,// and then fill-in the corresponding field on the form.// place.address_components are google.maps.GeocoderAddressComponent objects// which are documented at http://goo.gle/3l5i5Mrfor(constcomponentofplace.address_components){// @ts-ignore remove once typings fixedconstcomponentType=component.types[0];switch(componentType){case"street_number":{address1=`${component.long_name}${address1}`;break;}case"route":{address1+=component.short_name;break;}case"postal_code":{postcode=`${component.long_name}${postcode}`;break;}case"postal_code_suffix":{postcode=`${postcode}-${component.long_name}`;break;}case"locality":document.querySelector("#locality").value=component.long_name;break;case"administrative_area_level_1":{document.querySelector("#state").value=component.short_name;break;}case"country":document.querySelector("#country").value=component.long_name;break;}}address1Field.value=address1;postalField.value=postcode;// After filling the form with address components from the Autocomplete// prediction, set cursor focus on the second address line to encourage// entry of subpremise information such as apartment, unit, or floor number.address2Field.focus();}window.initAutocomplete=initAutocomplete;
بهطور پیشفرض، فیلد نوشتاری ایجادشده توسط سرویس تکمیل خودکار حاوی
نوشتار جایبان استاندارد است. برای اصلاح نوشتار، مشخصه
placeholder را در عنصر input تنظیم کنید:
<input id="searchTextField" type="text" size="50" placeholder="Anything you want!">
توجه: نوشتار جایبان پیشفرض بهطور خودکار بومیسازی میشود. اگر
مقدار جایبان خودتان را مشخص کنید، باید بومیسازی آن
مقدار را در برنامهتان مدیریت کنید. برای کسب اطلاعات درباره نحوه انتخاب زبان توسط Google Maps
JavaScript API، سند مربوط به
بومیسازی را بخوانید.
SearchBox به کاربران اجازه میدهد جستجوی جغرافیایی مبتنی بر نوشتار انجام دهند،
مثلاً «پیتزا در نیویورک» یا «کفشفروشیهای نزدیک خیابان رابسون».
میتوانید SearchBox را به فیلد نوشتاری پیوست کنید و با وارد شدن نوشتار، سرویس پیشبینیها را بهصورت فهرست انتخاب کرکرهای برمیگرداند.
SearchBox فهرست گستردهای از پیشبینیها را ارائه میدهد که میتواند شامل مکانها (همانطور که توسط Places API تعریف شده است) بهعلاوه عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر «پیتزا در نیو» را وارد کند، فهرست انتخاب ممکن است
عبارت «پیتزا در نیویورک، نیویورک» و همچنین نامهای مختلف
پیتزافروشیها را شامل شود. وقتی کاربر مکانی را از فهرست انتخاب میکند،
اطلاعات مربوط به آن مکان به شیء SearchBox برگردانده میشود و میتواند
توسط برنامه شما بازیابی شود.
سازنده SearchBox دو آرگومان میگیرد:
عنصر HTML input از نوع text. این
فیلد ورودی است که سرویس SearchBox بر آن نظارت خواهد کرد و
نتایجش را به آن پیوست خواهد کرد.
یک آرگومان options که میتواند حاوی ویژگی bounds باشد:
bounds یک شیء google.maps.LatLngBounds است که منطقهای را که باید در آن مکانها جستجو شود مشخص میکند. نتایج
به مکانهای موجود در این مرزها متمایل هستند، اما به آنها محدود نمیشوند.
کد زیر از پارامتر bounds برای سوگیری نتایج بهسمت مکانهای درون یک منطقه جغرافیایی خاص استفاده میکند که بااستفاده از مختصات عرض جغرافیایی/طول جغرافیایی مشخص شده است.
وقتی کاربر موردی را از پیشبینیهای پیوستشده به چارگوش جستجو انتخاب میکند، سرویس رویداد places_changed را راهاندازی میکند. میتوانید
getPlaces() را در شیء SearchBox فراخوانی کنید تا
آرایهای حاوی چندین پیشبینی را بازیابی کنید که هرکدام یک
شیء PlaceResult است.
برای اطلاعات بیشتر درباره شیء PlaceResult، به
اسناد مربوط به
نتایج جزئیات مکان مراجعه کنید.
TypeScript
// Listen for the event fired when the user selects a prediction and retrieve// more details for that place.searchBox.addListener("places_changed",()=>{constplaces=searchBox.getPlaces();if(places.length==0){return;}// Clear out the old markers.markers.forEach((marker)=>{marker.setMap(null);});markers=[];// For each place, get the icon, name and location.constbounds=newgoogle.maps.LatLngBounds();places.forEach((place)=>{if(!place.geometry||!place.geometry.location){console.log("Returned place contains no geometry");return;}consticon={url:place.iconasstring,size:newgoogle.maps.Size(71,71),origin:newgoogle.maps.Point(0,0),anchor:newgoogle.maps.Point(17,34),scaledSize:newgoogle.maps.Size(25,25),};// Create a marker for each place.markers.push(newgoogle.maps.Marker({map,icon,title:place.name,position:place.geometry.location,}));if(place.geometry.viewport){// Only geocodes have viewport.bounds.union(place.geometry.viewport);}else{bounds.extend(place.geometry.location);}});map.fitBounds(bounds);});
// Listen for the event fired when the user selects a prediction and retrieve// more details for that place.searchBox.addListener("places_changed",()=>{constplaces=searchBox.getPlaces();if(places.length==0){return;}// Clear out the old markers.markers.forEach((marker)=>{marker.setMap(null);});markers=[];// For each place, get the icon, name and location.constbounds=newgoogle.maps.LatLngBounds();places.forEach((place)=>{if(!place.geometry||!place.geometry.location){console.log("Returned place contains no geometry");return;}consticon={url:place.icon,size:newgoogle.maps.Size(71,71),origin:newgoogle.maps.Point(0,0),anchor:newgoogle.maps.Point(17,34),scaledSize:newgoogle.maps.Size(25,25),};// Create a marker for each place.markers.push(newgoogle.maps.Marker({map,icon,title:place.name,position:place.geometry.location,}),);if(place.geometry.viewport){// Only geocodes have viewport.bounds.union(place.geometry.viewport);}else{bounds.extend(place.geometry.location);}});map.fitBounds(bounds);});
برای بازیابی برنامهریزیشده پیشبینیها، از کلاس
AutocompleteService استفاده کنید. AutocompleteService
هیچ کنترل میانای کاربری اضافه نمیکند. درعوض، آرایهای از اشیاء پیشبینی را برمیگرداند که هرکدام حاوی نوشتار پیشبینی، اطلاعات مرجع، و جزئیات نحوه مطابقت نتیجه با ورودی کاربر است.
اگر میخواهید کنترل بیشتری بر میانای کاربر نسبتبه آنچه
Autocomplete و SearchBox
توضیحدادهشده در بالا ارائه میدهند داشته باشید، این گزینه مفید است.
AutocompleteService روشهای زیر را نشان میدهد:
getPlacePredictions() پیشبینیهای مکان را برمیگرداند.
توجه: «مکان» میتواند یک مؤسسه، مکان جغرافیایی، یا نقطه جالب برجسته باشد، همانطور که توسط Places API تعریف شده است.
getQueryPredictions() فهرست گستردهای از پیشبینیها را برمیگرداند که میتواند شامل مکانها (همانطور که توسط Places API تعریف شده است) بهعلاوه عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر
«پیتزا در نیو» را وارد کند، فهرست انتخاب ممکن است شامل عبارت
«پیتزا در نیویورک، نیویورک» و همچنین نامهای پیتزافروشیهای مختلف باشد.
هر دو روش بالا آرایهای از
اشیاء
پیشبینی را به شکل زیر برمیگردانند:
description پیشبینی منطبق است.
distance_meters فاصله مکان از AutocompletionRequest.origin مشخصشده به متر است.
matched_substrings حاوی مجموعهای از رشتههای فرعی در
توضیحات است که با عناصر ورودی کاربر مطابقت دارد. این کار برای برجسته کردن آن رشتههای فرعی در برنامهتان مفید است. در بسیاری از موارد،
پرسمان بهصورت رشته فرعی فیلد شرح نشان داده میشود.
length طول رشته فرعی است.
offset آفست نویسه است که از ابتدای رشته شرح اندازهگیری میشود و زیررشته منطبق در آنجا ظاهر میشود.
place_id شناسهای متنی است که بهطور منحصربهفرد مکانی را
مشخص میکند. برای بازیابی اطلاعات مربوط به مکان، این شناسه را در فیلد placeId از درخواست جزئیات مکان ارسال کنید. درباره نحوه
ارجاع به مکان
با شناسه مکان بیشتر بدانید.
terms آرایهای است که شامل عناصر پُرسمان است. برای
یک مکان، هر عنصر معمولاً بخشی از نشانی را تشکیل میدهد.
offset آفست نویسه است که از ابتدای رشته شرح اندازهگیری میشود و زیررشته منطبق در آنجا ظاهر میشود.
value عبارت منطبق است.
نمونه زیر درخواست پیشبینی پُرسمان را برای عبارت
«پیتزا در نزدیکی» اجرا میکند و نتیجه را در فهرست نمایش میدهد.
TypeScript
// This example retrieves autocomplete predictions programmatically from the// autocomplete service, and displays them as an HTML list.// This example requires the Places library. Include the libraries=places// parameter when you first load the API. For example:// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">functioninitService():void{constdisplaySuggestions=function(predictions:google.maps.places.QueryAutocompletePrediction[]|null,status:google.maps.places.PlacesServiceStatus){if(status!=google.maps.places.PlacesServiceStatus.OK||!predictions){alert(status);return;}predictions.forEach((prediction)=>{constli=document.createElement("li");li.appendChild(document.createTextNode(prediction.description));(document.getElementById("results")asHTMLUListElement).appendChild(li);});};constservice=newgoogle.maps.places.AutocompleteService();service.getQueryPredictions({input:"pizza near Syd"},displaySuggestions);}declareglobal{interfaceWindow{initService:()=>void;}}window.initService=initService;
// This example retrieves autocomplete predictions programmatically from the// autocomplete service, and displays them as an HTML list.// This example requires the Places library. Include the libraries=places// parameter when you first load the API. For example:// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">functioninitService(){constdisplaySuggestions=function(predictions,status){if(status!=google.maps.places.PlacesServiceStatus.OK||!predictions){alert(status);return;}predictions.forEach((prediction)=>{constli=document.createElement("li");li.appendChild(document.createTextNode(prediction.description));document.getElementById("results").appendChild(li);});};constservice=newgoogle.maps.places.AutocompleteService();service.getQueryPredictions({input:"pizza near Syd"},displaySuggestions);}window.initService=initService;
<html>
<head>
<title>Retrieving Autocomplete Predictions</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<p>Query suggestions for 'pizza near Syd':</p>
<ul id="results"></ul>
<!-- Replace Powered By Google image src with self hosted image. https://developers.google.com/maps/documentation/places/web-service/policies#other_attribution_requirements -->
<img
class="powered-by-google"
src="https://storage.googleapis.com/geo-devrel-public-buckets/powered_by_google_on_white.png"
alt="Powered by Google"
/>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initService&libraries=places&v=weekly"
defer
></script>
</body>
</html>
AutocompleteService.getPlacePredictions()
میتواند از کد جلسه (درصورت پیادهسازی) برای گروهبندی درخواستهای تکمیل خودکار برای اهداف صورتحساب استفاده کند. کدهای جلسه، مراحل پُرسمان و انتخاب جستجوی تکمیل خودکار کاربر را برای اهداف صورتحساب در یک جلسه مجزا گروهبندی میکنند. جلسه زمانی شروع میشود که کاربر شروع به تایپ کردن پُرسمان میکند و زمانی بهپایان میرسد که مکانی را انتخاب میکند. هر جلسه میتواند چندین پُرسمان داشته باشد و پساز آن یک مکان انتخاب شود.
وقتی جلسه به پایان میرسد، دیگر آن کد معتبر نیست. برنامه شما باید
برای هر جلسه یک کد جدید تولید کند. توصیه میکنیم از کد جلسه برای
همه جلسههای تکمیل خودکار استفاده کنید. اگر پارامتر sessionToken
حذف شود یا اگر از کد جلسه مجدداً استفاده کنید، هزینه جلسه بهگونهای محاسبه میشود که گویی هیچ
کد جلسهای ارائه نشده است (هر درخواست بهطور جداگانه صورتحساب میشود).
باید از همان کد جلسه برای ایجاد یک درخواست
جزئیات جا
در مکانی که از تماس با AutocompleteService.getPlacePredictions() حاصل میشود استفاده کنید.
در این حالت، درخواست تکمیل خودکار با درخواست «جزئیات جا» ترکیب میشود و هزینه تماس بهعنوان درخواست «جزئیات جا» معمولی محاسبه میشود. درخواست تکمیل خودکار
رایگان است. اگر از کد جلسه برای درخواست استفاده نکنید، هم برای درخواست تکمیل خودکار و هم برای درخواست «جزئیات جا» هزینه دریافت میشود.
حتماً برای هر جلسه جدید، یک کد جلسه یکتا ارسال کنید. استفاده از یک کد برای بیشاز
یک جلسه «تکمیل خودکار» باعث نامعتبر شدن آن جلسههای «تکمیل خودکار» میشود و هزینه همه درخواستهای «تکمیل خودکار»
در جلسههای نامعتبر بهطور جداگانه بااستفاده از واحد نگهداری موجودی
«تکمیل خودکار» بهازای هر درخواست محاسبه میشود. درباره کد جلسه بیشتر بخوانید.
مثال زیر ایجاد یک کد جلسه و سپس ارسال آن در یک
AutocompleteService را نشان میدهد (تابع displaySuggestions()
برای اختصار حذف شده است):
// Create a new session token.varsessionToken=newgoogle.maps.places.AutocompleteSessionToken();// Pass the token to the autocomplete service.varautocompleteService=newgoogle.maps.places.AutocompleteService();autocompleteService.getPlacePredictions({input:'pizza near Syd',sessionToken:sessionToken},displaySuggestions);
حتماً برای هر جلسه جدید، یک کد جلسه یکتا ارسال کنید. استفاده از یک کد برای بیش از یک جلسه باعث میشود که هر درخواست بهصورت جداگانه صورتحساب شود.
بهطور پیشفرض، عناصر میانای کاربر ارائهشده توسط Autocomplete و
SearchBox برای گنجاندن در Google Map سبکبندی شدهاند. شاید بخواهید
سبکبندی را متناسب با سایت خودتان تنظیم کنید. کلاسهای CSS زیر
دردسترس است. همه کلاسهای فهرستشده در زیر هم برای ابزاره Autocomplete و هم برای ابزاره SearchBox اعمال میشوند.
کلاسهای CSS برای ابزارههای «تکمیل خودکار» و SearchBox
کلاس CSS
شرح
pac-container
عنصر دیداری حاوی فهرست پیشبینیهای برگرداندهشده توسط
سرویس «تکمیل خودکار جا». این فهرست بهصورت فهرست کرکرهای در زیر ابزاره
Autocomplete یا SearchBox نشان داده میشود.
pac-icon
نمادی که در سمت راست هر مورد در فهرست پیشبینیها نمایش داده میشود.
pac-item
موردی در فهرست پیشبینیهای ارائهشده توسط
ابزاره Autocomplete یا SearchBox.
pac-item:hover
موردی که کاربر اشارهگر موشواره را روی آن نگه میدارد.
pac-item-selected
موردی که کاربر بااستفاده از صفحهکلید انتخاب میکند. توجه: موارد انتخابشده عضو این کلاس و کلاس pac-item خواهند بود.
pac-item-query
بازه زمانی درون pac-item که بخش اصلی پیشبینی است. برای مکانهای جغرافیایی، این شامل نام مکان، مانند
«سیدنی»، یا نام و شماره خیابان، مانند «خیابان کینگ ۱۰» است. برای
جستجوهای نوشتاری مثل «پیتزا در نیویورک»، این پارامتر حاوی نوشتار کامل
پُرسمان است. بهطور پیشفرض، pac-item-query به رنگ
سیاه است. اگر نوشتار دیگری در pac-item وجود داشته باشد،
خارج از pac-item-query است و سبک خود را از
pac-item بهارث میبرد. بهطور پیشفرض خاکستری است. نوشتار اضافی
معمولاً نشانی است.
pac-matched
بخشی از پیشبینی برگرداندهشده که با ورودی کاربر مطابقت دارد. بهطور پیشفرض، این نوشتار منطبق با نوشتار پررنگ برجسته میشود. توجه داشته باشید که
نوشتار مطابقتدادهشده ممکن است در هر جایی از pac-item باشد. این بخش لزوماً قسمتی از pac-item-query نیست و میتواند تا حدودی در pac-item-query و تا حدودی در بقیه نوشتار در pac-item باشد.
بهینهسازی «تکمیل خودکار جا (قدیمی)»
این بخش روالهای مطلوبی را شرح میدهد که به شما کمک میکند بیشترین بهره را از سرویس «تکمیل خودکار جا» (قدیمی) ببرید.
از همان ابتدا،
فیلدهای داده
«تکمیل خودکار جا» (قدیمی) را درک کنید.
فیلدهای سوگیری مکان و محدودیت مکان اختیاری هستند اما میتوانند
تأثیر قابلتوجهی بر عملکرد تکمیل خودکار داشته باشند.
از مدیریت خطا استفاده کنید تا مطمئن شوید که اگر میانای برنامهسازی کاربردی خطایی برگرداند،
برنامه شما بهخوبی تنزل پیدا میکند.
مطمئن شوید که برنامهتان وقتی انتخابی وجود ندارد، این وضعیت را مدیریت میکند و راهی برای ادامه دادن به کاربران ارائه میدهد.
روالهای مطلوب بهینهسازی هزینه
بهینهسازی هزینه پایه
برای بهینهسازی هزینه استفاده از سرویس «تکمیل خودکار جا» (قدیمی)، از ماسکهای فیلد در ابزارههای «جزئیات جا» (قدیمی) و «تکمیل خودکار جا» (قدیمی) استفاده کنید تا فقط فیلدهای داده «تکمیل خودکار جا» (قدیمی) موردنیازتان برگردانده شود.
بهینهسازی پیشرفته هزینه
پیادهسازی برنامهنویسیشده «تکمیل خودکار جا (قدیمی)» را برای دسترسی به
SKU: تکمیل خودکار - قیمتگذاری بهازای درخواست
و درخواست نتایج Geocoding API درباره مکان انتخابشده بهجای «جزئیات جا (قدیمی)» درنظر بگیرید. اگر هر دو شرط زیر برقرار باشد، قیمتگذاری بهازای درخواست همراه با Geocoding API مقرونبهصرفهتر از قیمتگذاری بهازای جلسه (جلسهمحور) است:
اگر فقط به طول و عرض جغرافیایی یا نشانی مکان انتخابی کاربر نیاز دارید، Geocoding API این اطلاعات را با هزینه کمتری نسبتبه فراخوانی Place Details (Legacy) ارائه میدهد.
اگر کاربران پیشبینی تکمیل خودکار را در میانگین چهار درخواست پیشبینی «تکمیل خودکار جا (قدیمی)» یا کمتر انتخاب کنند، قیمتگذاری براساس درخواست میتواند مقرونبهصرفهتر از قیمتگذاری براساس جلسه باشد.
برای دریافت راهنمایی درباره انتخاب پیادهسازی «تکمیل خودکار جا (قدیمی)» که با نیازهایتان مطابقت داشته باشد، برگهای را انتخاب کنید که با پاسخ شما به سؤال زیر مطابقت دارد.
آیا برنامه شما به اطلاعاتی غیراز نشانی و طول/عرض جغرافیایی پیشبینی انتخابشده نیاز دارد؟
دستورالعملهای زیر روشهای بهینهسازی عملکرد «تکمیل خودکار جا» (قدیمی) را شرح میدهد:
محدودیتهای کشور،
سوگیری مکان،
و (برای پیادهسازیهای برنامهای) اولویت زبان را به پیادهسازی
«تکمیل خودکار جا» (قدیمی) اضافه کنید. برای ابزارهها به اولویت زبان نیازی نیست
چون آنها اولویتهای زبان را از مرورگر یا دستگاه همراه کاربر انتخاب میکنند.
اگر «تکمیل خودکار جا» (قدیمی) با نقشه همراه باشد، میتوانید مکان را براساس نمای نقشه سوگیری کنید.
در شرایطی که کاربر یکی از پیشبینیهای «تکمیل خودکار جا (قدیمی)» را انتخاب نمیکند، معمولاً به این دلیل که هیچکدام از آن پیشبینیها نشانی نتیجه موردنظر نیست، میتوانید از ورودی اصلی کاربر دوباره استفاده کنید تا نتایج مرتبطتری دریافت کنید:
اگر انتظار دارید کاربر فقط اطلاعات نشانی را وارد کند، از ورودی اصلی کاربر در فراخوانی به Geocoding API مجدداً استفاده کنید.
اگر انتظار دارید کاربر پُرسمانها را برای مکان خاصی براساس نام یا نشانی وارد کند،
از درخواست «جزئیات جا (قدیمی)» استفاده کنید. اگر نتایج فقط در منطقه خاصی موردانتظار است، از سوگیری مکان استفاده کنید.
سناریوهای دیگری که در آنها بهتر است به Geocoding API برگردید عبارتاند از:
کاربرانی که نشانیهای فرعی را وارد میکنند، مانند نشانیهای مربوط به واحدها یا آپارتمانهای خاص
در یک ساختمان. برای مثال، نشانی چکی «Stroupežnického 3191/17, Praha»
پیشبینی جزئی در «تکمیل خودکار جا» (قدیمی) ارائه میدهد.
کاربرانی که نشانیها را با پیشوندهای بخش جاده وارد میکنند، مانند «23-30 29th St, Queens» در
شهر نیویورک یا «47-380 Kamehameha Hwy, Kaneohe» در جزیره کائوآئی در هاوایی.
سوگیری مکانی
با ارسال پارامتر location و پارامتر radius، نتایج را به منطقه مشخصی متمایل کنید. این کار به «تکمیل خودکار جا» (قدیمی) دستور میدهد که نمایش نتایج را در منطقه تعریفشده ترجیح دهد. ممکن است نتایج خارج از منطقه تعریفشده همچنان نمایش داده شود. میتوانید از پارامتر includedRegionCodes برای فیلتر کردن نتایج استفاده کنید
تا فقط مکانهای داخل کشور مشخصشده نشان داده شود.
محدود کردن مکان
با ارسال پارامتر locationRestriction، نتایج را به منطقه مشخصی محدود کنید.
همچنین میتوانید با افزودن پارامتر
strictbounds
، نتایج را به منطقهای که با location
و پارامتر radius تعریف شده است محدود کنید. این کار به «تکمیل خودکار جا» (قدیمی) دستور میدهد فقط
نتایج درون آن منطقه را برگرداند.
حدود استفاده
سهمیهها
برای اطلاعات مربوط به سهمیه و قیمتگذاری، به
سند استفاده و صورتحساب برای Places API مراجعه کنید.