تکمیل خودکار جا
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
توسعهدهندگان منطقه اقتصادی اروپا (EEA)
توجه: کتابخانههای
سمت سرور
این صفحه کتابخانه سمت کارخواه دردسترس با
Maps JavaScript API را شرح میدهد. اگر میخواهید با
سرویس وب «میانای برنامهسازی کاربردی مکانها» در سرورتان کار کنید،
کارخواه Node.js برای سرویسهای Google Maps را ببینید. صفحه آن پیوند همچنین «کارخواه Java»،
«کارخواه Python»، و «کارخواه Go» را برای «سرویسهای Google Maps» معرفی میکند.
مقدمه
«تکمیل خودکار» یکی از ویژگیهای کتابخانه «مکانها» در
Maps JavaScript API است. میتوانید از تکمیل خودکار استفاده کنید تا به
برنامههایتان رفتار جستجوی پیشاز تایپ فیلد جستجوی Google Maps را بدهید.
سرویس تکمیل خودکار میتواند براساس کلمات کامل و زیررشتهها مطابقت پیدا کند و نام مکانها، نشانیها، و کدهای
پلاس را حل کند. بنابراین برنامهها میتوانند همزمان با تایپ کاربر پُرسمان ارسال کنند تا پیشبینیهای مکان را درجا ارائه دهند. طبق تعریف «میانای برنامهسازی کاربردی مکانها»،
«مکان» میتواند یک مؤسسه، یک مکان جغرافیایی، یا یک نقطه موردعلاقه
برجسته باشد.
درحال شروع کردن
قبلاز استفاده از کتابخانه «مکانها» در Maps JavaScript API، ابتدا
تأیید کنید که Places API در کنسول Google Cloud، در همان
پروژهای که برای Maps JavaScript API راهاندازی کردهاید، فعال باشد.
برای مشاهده فهرست میاناهای برنامهسازی کاربردی فعالشده:
روی دکمه انتخاب پروژه کلیک کنید، سپس همان پروژهای را که برای
«میانای برنامهسازی کاربردی جاوا اسکریپت در Maps» راهاندازی کردهاید انتخاب کنید و روی باز کردن کلیک کنید.
از فهرست میاناهای برنامهسازی کاربردی در داشبورد،
میانای برنامهسازی کاربردی مکانها را پیدا کنید.
اگر API را در فهرست میبینید، همه چیز آماده است. بااینحال، این پروژه در وضعیت «قدیمی» است.
برای اطلاعات بیشتر درباره مرحله «قدیمی» و نحوه انتقال از «قدیمی» به سرویسهای جدیدتر، محصولات و ویژگیهای قدیمی را ببینید.
برای ابزارکهای تکمیل خودکار
و SearchBox
استثنایی وجود دارد که هنوز بهعنوان محصول GA در «میانای برنامهسازی کاربردی مکانها (جدید)» دردسترس نیستند.
بار کردن کتابخانه
سرویس «مکانها» کتابخانهای خوداتکا است که از کد اصلی
Maps JavaScript API جدا است. برای استفاده از ویژگیهای موجود
در این کتابخانه، ابتدا باید آن را بااستفاده از libraries
پارامتر در نشانی وب راهاندازی Maps API بار کنید:
این API دو نوع ابزارک تکمیل خودکار ارائه میدهد که میتوانید بااستفاده از
کلاسهای Autocomplete و SearchBox به ترتیب آنها را اضافه کنید.
علاوهبراین، میتوانید از کلاس AutocompleteService برای بازیابی
نتایج تکمیل خودکار بهصورت برنامهریزیشده استفاده کنید (به «مرجع Maps JavaScript API»:
کلاس AutocompleteService مراجعه کنید).
در زیر خلاصهای از کلاسهای دردسترس آمده است:
Autocomplete فیلد ورودی نوشتاری را به صفحه وب شما اضافه میکند،
و آن فیلد را برای ورودیهای نویسه پایش میکند. وقتی کاربر نوشتار وارد میکند،
تکمیل خودکار پیشبینیهای مکان را بهصورت
فهرست کرکرهای برمیگرداند. وقتی کاربر مکانی را از فهرست انتخاب میکند، اطلاعات
مربوط به آن مکان به شیء تکمیل خودکار برگردانده میشود و برنامه شما میتواند
آن را بازیابی کند. جزئیات را در زیر ببینید.
شکل ۱: فیلد نوشتار تکمیل خودکار و فهرست انتخابشکل ۲: فرم نشانی تکمیلشده
SearchBox فیلد ورودی نوشتار را به صفحه وب شما اضافه میکند، به همان
روش Autocomplete. تفاوتها به شرح زیر است:
تفاوت اصلی در
نتایجی است که در فهرست انتخاب ظاهر میشود. SearchBox فهرست گستردهای از پیشبینیها را ارائه میدهد که میتواند شامل مکانها (طبق تعریف Places API) و همچنین عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر
عبارت «پیتزا در تهران» را وارد کند، فهرست انتخاب ممکن است عبارت
«پیتزا در تهران» و همچنین نامهای مختلف پیتزافروشیها را
شامل شود.
SearchBox نسبت به
Autocomplete گزینههای کمتری برای محدود کردن جستجو ارائه میدهد. در حالت اول، میتوانید جستجو را بهسمت LatLngBounds خاصی متمایل کنید. در
مورد دوم، میتوانید جستجو را به کشور خاص و انواع مکان خاص محدود کنید و
همچنین محدودهها را تنظیم کنید. برای اطلاعات بیشتر، به
زیر مراجعه کنید.
شکل ۳: «چارگوش جستجو» عبارات جستجو و پیشبینیهای مکان را ارائه میدهد.
جزئیات را در زیر ببینید.
میتوانید شیء
AutocompleteService ایجاد کنید تا
پیشبینیها را بهصورت برنامهنویسی بازیابی کنید. برای
بازیابی مکانهای منطبق، با getPlacePredictions() تماس بگیرید، یا برای
بازیابی مکانهای منطبق بهعلاوه عبارتهای جستجوی پیشنهادی، با getQueryPredictions() تماس بگیرید.
توجه: AutocompleteService هیچ کنترل واسط کاربری اضافه نمیکند.
درعوض، روشهای بالا آرایهای از اشیای پیشبینی را برمیگردانند. هر
شیء پیشبینی حاوی نوشتار پیشبینی، و همچنین اطلاعات مرجع
و جزئیات مربوط به نحوه مطابقت نتیجه با ورودی کاربر است. جزئیات را در زیر ببینید.
افزودن ابزاره «تکمیل خودکار»
ابزاره Autocomplete
فیلد ورودی نوشتاری در صفحه وب شما ایجاد میکند، پیشبینیهای مکانها را در فهرست انتخاب واسط کاربر
ارائه میدهد، و جزئیات مکان را در پاسخ به درخواست getPlace() برمیگرداند. هر ورودی در فهرست انتخاب با یک مکان (طبق تعریف Places API) مطابقت دارد.
سازنده Autocomplete دو آرگومان میگیرد:
عنصر HTML input از نوع text. این فیلد ورودی است که سرویس تکمیل خودکار
آن را پایش میکند و نتایجش را به آن پیوست میکند.
آرایهای از دادههای fields که باید در
پاسخ Place Details برای PlaceResult انتخابشده کاربر گنجانده شود. اگر دارایی تنظیم نشده باشد یا اگر ['ALL'] ارسال شود، همه فیلدهای دردسترس برگردانده میشوند و
هزینه آنها محاسبه میشود (این کار برای استقرار تولید توصیه نمیشود). برای فهرست فیلدها، PlaceResult را ببینید.
آرایهای از types که
نوع صریح یا مجموعه نوع را مشخص میکند، همانطور که در انواع پشتیبانیشده فهرست شده است. اگر نوعی مشخص نشده باشد، همه انواع برگردانده میشوند.
bounds یک شیء google.maps.LatLngBounds است که
منطقهای را که باید در آن مکانها را جستجو کرد مشخص میکند. نتایج به مکانهای درون این محدوده گرایش دارد، اما به آنها محدود نمیشود.
strictBounds یک boolean است
که مشخص میکند آیا «میانای برنامهسازی کاربردی» باید فقط مکانهایی را برگرداند که دقیقاً در منطقه تعریفشده
توسط bounds دادهشده قرار دارند یا نه. این «میانای برنامهسازی کاربردی» نتایج خارج از این منطقه را برنمیگرداند، حتی اگر با ورودی کاربر مطابقت داشته باشند.
از componentRestrictions میتوان برای محدود کردن نتایج به گروههای خاص استفاده کرد. میتوانید از componentRestrictions برای فیلتر کردن حداکثر ۵ کشور استفاده کنید. کشورها باید بهعنوان کد کشور دوحرفی سازگار با ISO 3166-1 Alpha-2 ارسال شوند. چندین کشور باید بهعنوان فهرستی از کدهای کشور ارسال شوند.
از 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 فراخوانی کنید تا کنترلکننده را اضافه کنید.
برای بازیابی کردن شیء PlaceResult
، در شیء Autocomplete، Autocomplete.getPlace()
را فراخوانی کنید، سپس میتوانید از آن برای دریافت اطلاعات بیشتر درباره مکان انتخابشده
استفاده کنید.
بهطور پیشفرض، وقتی کاربر مکانی را انتخاب میکند، تکمیل خودکار همه فیلدهای داده دردسترس را برای مکان انتخابشده برمیگرداند و هزینه آن از شما کسر میشود.
از 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 فهرست گستردهای از پیشبینیها را ارائه میدهد که میتواند شامل مکانها (طبق تعریف «میانای برنامهسازی کاربردی مکانها») بهعلاوه عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر «پیتزا در تهران» را وارد کند، فهرست انتخاب ممکن است عبارت «پیتزا در تهران» و همچنین نامهای مختلف فروشگاههای پیتزا را دربرگیرد. وقتی کاربر مکانی را از فهرست انتخاب میکند،
اطلاعات مربوط به آن مکان به شیء 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() پیشبینی مکان را برمیگرداند.
توجه: «مکان» میتواند یک مؤسسه، مکان جغرافیایی، یا نقطه موردعلاقه برجسته باشد،
همانطور که در «میانای برنامهسازی کاربردی مکانها» تعریف شده است.
getQueryPredictions() فهرست گستردهای از پیشبینیها برمیگرداند که میتواند شامل مکانها (طبق تعریف «واسط برنامهسازی کاربردی مکانها») و همچنین عبارتهای جستجوی پیشنهادی باشد. برای مثال، اگر کاربر
عبارت «پیتزا در تهران» را وارد کند، فهرست انتخاب ممکن است عبارت
«پیتزا در تهران» و همچنین نامهای مختلف فروشگاههای پیتزا را دربرگیرد.
هر دو روش بالا آرایهای از
پیشبینی
اشیا را به شکل زیر برمیگردانند:
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 سبکبندی میشوند. شاید بخواهید
سبکبندی را متناسب با سایت خودتان تنظیم کنید. کلاسهای CSS زیر دردسترس است. همه کلاسهای فهرستشده در زیر برای هر دو ابزاره Autocomplete و SearchBox اعمال میشود.
کلاسهای CSS برای ابزارکهای «تکمیل خودکار» و «چارگوش جستجو»
کلاس CSS
شرح
pac-container
عنصر دیداری حاوی فهرست پیشبینیهای برگشتی از سرویس
«تکمیل خودکار مکان». این فهرست بهعنوان فهرست کرکرهای در زیر
Autocomplete یا ابزارک SearchBox ظاهر میشود.
pac-icon
نماد نمایشدادهشده در سمت راست هر مورد در فهرست
پیشبینیها.
pac-item
موردی در فهرست پیشبینیهای ارائهشده توسط ابزاره
Autocomplete یا SearchBox.
pac-item:hover
مورد وقتی کاربر نشانگر موشواره را روی آن نگه میدارد.
pac-item-selected
موردی که کاربر بااستفاده از صفحهکلید انتخاب میکند. توجه: موارد انتخابشده عضو این کلاس و کلاس pac-item خواهند بود.
pac-item-query
گسترهای درون pac-item که بخش اصلی پیشبینی است. برای مکانهای جغرافیایی، این فیلد حاوی نام مکان، مثل
«سیدنی»، یا نام و شماره خیابان، مثل «10 King Street» است. برای
جستجوهای نوشتاری مثل «پیتزا در تهران»، شامل نوشتار کامل
پُرسمان است. بهطور پیشفرض، pac-item-query به رنگ سیاه است. اگر نوشتار اضافهای در pac-item وجود داشته باشد،
خارج از pac-item-query است و سبک آن را از
pac-item بهارث میبرد. بهطور پیشفرض به رنگ خاکستری است. نوشتار اضافی معمولاً نشانی است.
pac-matched
بخشی از پیشبینی برگشتی که با ورودی کاربر مطابقت دارد. بهطور
پیشفرض، این نوشتار منطبق با نوشتار پررنگ برجسته میشود. توجه داشته باشید که نوشتار منطبق ممکن است در هر جایی از pac-item باشد. این
لزوماً بخشی از pac-item-query نیست و میتواند بخشی
در pac-item-query و بخشی در نوشتار باقیمانده
در pac-item باشد.
بهینهسازی «تکمیل خودکار جا» (قدیمی)
این بخش روالهای مطلوب را شرح میدهد تا به شما کمک کند بیشترین بهره را از سرویس «تکمیل خودکار مکان» (قدیمی) ببرید.
فیلدهای «سوگیری مکان» و «محدودیت مکان» اختیاری هستند اما میتوانند
تأثیر قابلتوجهی بر عملکرد تکمیل خودکار داشته باشند.
از مدیریت خطا استفاده کنید تا مطمئن شوید اگر میانای برنامهسازی کاربردی خطا برگرداند، برنامه شما بهخوبی تنزل مییابد.
مطمئن شوید که برنامهتان درصورت عدم انتخاب، عملکرد مناسبی داشته باشد و به کاربران امکان ادامه دادن بدهد.
روالهای مطلوب بهینهسازی هزینه
بهینهسازی هزینه پایه
برای بهینهسازی هزینه استفاده از سرویس «تکمیل خودکار مکان (قدیمی)»
، از پوششهای فیلد در ابزارکهای «جزئیات مکان (قدیمی)» و «تکمیل خودکار مکان (قدیمی)» استفاده کنید تا فقط
فیلدهای داده
«تکمیل خودکار مکان (قدیمی)» موردنیازتان را برگردانید.
بهینهسازی پیشرفته هزینه
برای دسترسی به
واحد نگهداری کالا: تکمیل خودکار - قیمتگذاری براساس درخواست
و درخواست نتایج «میانگاری API» درباره مکان انتخابشده بهجای «جزئیات مکان» (قدیمی)، پیادهسازی برنامهریزیشده «تکمیل خودکار مکان» (قدیمی) را درنظر بگیرید. اگر هر دو شرط زیر برقرار باشد، قیمتگذاری بهازای هر درخواست همراه با «میانای برنامهسازی کاربردی زمینکدیابی» نسبتبه قیمتگذاری بهازای هر جلسه (جلسهمحور) مقرونبهصرفهتر است:
اگر فقط به طول/عرض جغرافیایی یا نشانی مکان انتخابی کاربر نیاز دارید، «میانای برنامهسازی کاربردی زمینکدیابی» این اطلاعات را با هزینه کمتر از تماس «جزئیات مکان (قدیمی)» ارائه میدهد.
اگر کاربران پیشبینی تکمیل خودکار را در میانگین چهار درخواست پیشبینی «تکمیل خودکار مکان» (قدیمی) یا کمتر انتخاب کنند، قیمتگذاری بهازای هر درخواست ممکن است مقرونبهصرفهتر از قیمتگذاری بهازای هر جلسه باشد.
برای دریافت راهنمایی در انتخاب پیادهسازی «تکمیل خودکار مکان» (قدیمی) که متناسب با نیازهایتان باشد، برگهای را که با پاسخ شما به سؤال زیر مطابقت دارد انتخاب کنید.
آیا برنامه شما به اطلاعات دیگری غیراز نشانی و طول/عرض جغرافیایی پیشبینی انتخابی نیاز دارد؟
دستورالعملهای زیر روشهای بهینهسازی عملکرد «تکمیل خودکار مکان» (قدیمی) را شرح میدهد:
محدودیتهای کشور،
گرایش مکان،
و (برای پیادهسازیهای برنامهریزیشده) اولویت زبان را به پیادهسازی «تکمیل خودکار مکان» (قدیمی)
اضافه کنید. اولویت زبان برای
ابزارکها لازم نیست زیرا اولویتهای زبان را از مرورگر یا دستگاه همراه کاربر انتخاب میکنند.
اگر «جایآگهی خودکار مکان (قدیمی)» با نقشه همراه باشد، میتوانید مکان را براساس نمای درگاه نقشه گرایش دهید.
در شرایطی که کاربر یکی از پیشبینیهای «تکمیل خودکار مکان» (قدیمی) را انتخاب نمیکند، معمولاً
بهدلیل اینکه هیچیک از آن پیشبینیها نشانی نتیجه موردنظر نیست، میتوانید از ورودی کاربر اصلی
برای تلاش در جهت دریافت نتایج مرتبطتر استفاده مجدد کنید:
اگر انتظار دارید کاربر فقط اطلاعات نشانی را وارد کند، ورودی کاربر اصلی را در تماس با 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 محدود کنید. این دستور به «تکمیل خودکار مکان» (قدیمی) میگوید که فقط
نتایج را در آن منطقه برگرداند.
تاریخ آخرین بهروزرسانی 2026-10-05 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2026-10-05 بهوقت ساعت هماهنگ جهانی."],[],[]]