تکمیل خودکار مکان (Legacy) یک سرویس وب است که پیشبینیهای مکان را در پاسخ به یک درخواست HTTP برمیگرداند. این درخواست یک رشته جستجوی متنی و مرزهای جغرافیایی اختیاری را مشخص میکند. این سرویس میتواند برای ارائه قابلیت تکمیل خودکار برای جستجوهای جغرافیایی مبتنی بر متن، با بازگرداندن مکانهایی مانند مشاغل، آدرسها و نقاط مورد علاقه به محض تایپ کاربر، مورد استفاده قرار گیرد.
درخواستهای تکمیل خودکار (قدیمی) را ثبت کنید
تکمیل خودکار مکان (Legacy) بخشی از Places API است و یک کلید API و سهمیهها را با Places API به اشتراک میگذارد.
تکمیل خودکار مکان (Legacy) میتواند کلمات کامل و زیررشتهها را تطبیق دهد، نام مکانها، آدرسها و کدهای اضافی را حل کند. بنابراین، برنامهها میتوانند همزمان با تایپ کاربر، پرسوجوهایی ارسال کنند تا پیشبینیهای مکان را در لحظه ارائه دهند.
شما باید کدهای به علاوه را به درستی قالببندی کنید. این بدان معناست که باید علامت جمع را تا %2B با استفاده از URL-escape و فاصلهها را تا %20 با استفاده از URL-escape قرار دهید.
- کد سراسری یک کد ناحیهای چهار کاراکتری و کد محلی شش کاراکتری یا بیشتر است. برای مثال، کد سراسری URL-escape
849VCWC8+R9به849VCWC8%2BR9است. - کد مرکب، یک کد محلی شش کاراکتری (یا طولانیتر) با موقعیت مکانی صریح است. برای مثال، کد مرکب URL-escaped
CWC8+R9 Mountain View, CA, USAبهCWC8%2BR9%20Mountain%20View%20CA%20USAاست.
پیشبینیهای برگردانده شده به گونهای طراحی شدهاند که به کاربر ارائه شوند تا به او در انتخاب مکان مورد نظرش کمک کنند. میتوانید برای اطلاعات بیشتر در مورد هر یک از مکانهای برگردانده شده، درخواست «جزئیات مکان (قدیمی)» ارسال کنید.
یک درخواست تکمیل خودکار مکان (Legacy) یک URL HTTP به شکل زیر است:
https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters
که در آن output میتواند یکی از مقادیر زیر باشد:
-
json(توصیه میشود) خروجی را در قالب نشانهگذاری شیء جاوا اسکریپت (JSON) نشان میدهد. -
xmlخروجی را به صورت XML نشان میدهد
پارامترهای خاصی برای شروع درخواست تکمیل خودکار مکان (Legacy) مورد نیاز است. همانطور که در URL ها استاندارد است، همه پارامترها با استفاده از کاراکتر آمپرسند ( & ) از هم جدا می شوند. لیست پارامترها و مقادیر ممکن آنها در زیر ذکر شده است.
پارامترهای مورد نیاز
ورودی
رشته متنی که باید جستجو روی آن انجام شود. سرویس تکمیل خودکار مکان، تطابقهای کاندیدا را بر اساس این رشته برمیگرداند و نتایج را بر اساس ارتباط درک شده آنها مرتب میکند.
پارامترهای اختیاری
اجزا
گروهی از مکانهایی که میخواهید نتایج خود را به آنها محدود کنید. میتوانید از کامپوننتها برای فیلتر کردن تا حداکثر ۵ کشور استفاده کنید. کشورها باید به صورت دو کاراکتر، کد کشور سازگار با ISO 3166-1 Alpha-2، ارسال شوند. به عنوان مثال:
components=country:frنتایج شما را به مکانهایی در داخل فرانسه محدود میکند. چندین کشور باید به صورت چندین فیلترcountry:XX، با کاراکتر خط عمودی|به عنوان جداکننده ارسال شوند. به عنوان مثال:components=country:us|country:pr|country:vi|country:gu|country:mpنتایج شما را به مکانهایی در داخل ایالات متحده و سرزمینهای سازمانیافته غیر ثبت شده آن محدود میکند.توجه: اگر با کد کشور نتایج غیرمنتظرهای دریافت کردید، تأیید کنید که از کدی استفاده میکنید که شامل کشورها، سرزمینهای وابسته و مناطق جغرافیایی خاص مورد نظر شما میشود. میتوانید اطلاعات کد را در ویکیپدیا: فهرست کدهای کشور ISO 3166 یا پلتفرم مرور آنلاین ISO پیدا کنید.زبان
زبانی که نتایج با آن برگردانده میشوند.
- فهرست زبانهای پشتیبانیشده را ببینید. گوگل اغلب زبانهای پشتیبانیشده را بهروزرسانی میکند، بنابراین این فهرست ممکن است جامع نباشد.
- اگر
languageارائه نشود، API تلاش میکند از زبان ترجیحی مشخص شده در سربرگAccept-Languageاستفاده کند. - این API تمام تلاش خود را میکند تا آدرسی را ارائه دهد که هم برای کاربر و هم برای افراد محلی قابل خواندن باشد. برای دستیابی به این هدف، آدرسهای خیابان را به زبان محلی برمیگرداند و در صورت لزوم با رعایت زبان ترجیحی، آنها را به اسکریپتی که توسط کاربر قابل خواندن باشد، تبدیل میکند. تمام آدرسهای دیگر به زبان ترجیحی برگردانده میشوند. اجزای آدرس همگی به همان زبانی برگردانده میشوند که از اولین جزء انتخاب شده است.
- اگر نامی در زبان مورد نظر موجود نباشد، API از نزدیکترین مورد منطبق استفاده میکند.
- زبان ترجیحی تأثیر کمی بر مجموعه نتایجی که API برای برگرداندن انتخاب میکند و ترتیب برگرداندن آنها دارد. کدگذار جغرافیایی بسته به زبان، اختصارات را به طور متفاوتی تفسیر میکند، مانند اختصارات مربوط به انواع خیابان، یا مترادفهایی که ممکن است در یک زبان معتبر باشند اما در زبان دیگر معتبر نباشند. به عنوان مثال، utca و tér مترادف خیابان در زبان مجارستانی هستند.
مکان
نقطهای که اطلاعات مکان حول آن بازیابی میشود. این نقطه باید به صورت
latitude,longitudeمشخص شود. پارامترradiusنیز باید هنگام مشخص کردن مکان ارائه شود. اگرradiusارائه نشود، پارامترlocationنادیده گرفته میشود.هنگام استفاده از API جستجوی متن، اگر «پرسوجو» حاوی یک مکان صریح مانند «بازار بارسلونا» باشد، پارامتر «مکان» ممکن است نادیده گرفته شود.سوگیری مکانی
با مشخص کردن شعاع به علاوهی lat/lng، یا دو جفت lat/lng که نشاندهندهی نقاط یک مستطیل هستند، نتایج را در یک ناحیهی مشخصشده ترجیح دهید. اگر این پارامتر مشخص نشود، API بهطور پیشفرض از بایاس آدرس IP استفاده میکند.
- IP bias: به API دستور میدهد که از آدرس IP biasing استفاده کند. رشته
ipbiasرا به آن بدهید (این گزینه هیچ پارامتر اضافی ندارد). - Circular: رشتهای که شعاع را بر حسب متر به علاوهی lat/lng بر حسب درجهی اعشاری مشخص میکند. از قالب زیر استفاده کنید:
circle:radius@lat,lng. - مستطیلی: رشتهای که دو جفت lat/lng را بر حسب درجه اعشاری مشخص میکند و نقاط جنوب/غرب و شمال/شرق یک مستطیل را نشان میدهد. از قالب زیر استفاده کنید:
rectangle:south,west|north,east. توجه داشته باشید که مقادیر east/west در محدوده -180, 180 قرار میگیرند و مقادیر north/sout در محدوده -90, 90 قرار میگیرند.
- IP bias: به API دستور میدهد که از آدرس IP biasing استفاده کند. رشته
محدودیت مکانی
با مشخص کردن شعاع به علاوهی lat/lng، یا دو جفت lat/lng که نشاندهندهی نقاط یک مستطیل هستند، نتایج را به یک ناحیهی مشخص محدود کنید.
- Circular: رشتهای که شعاع را بر حسب متر به علاوهی lat/lng بر حسب درجهی اعشاری مشخص میکند. از قالب زیر استفاده کنید:
circle:radius@lat,lng. - مستطیلی: رشتهای که دو جفت lat/lng را بر حسب درجه اعشاری مشخص میکند و نقاط جنوب/غرب و شمال/شرق یک مستطیل را نشان میدهد. از قالب زیر استفاده کنید:
rectangle:south,west|north,east. توجه داشته باشید که مقادیر east/west در محدوده -180, 180 قرار میگیرند و مقادیر north/sout در محدوده -90, 90 قرار میگیرند.
- Circular: رشتهای که شعاع را بر حسب متر به علاوهی lat/lng بر حسب درجهی اعشاری مشخص میکند. از قالب زیر استفاده کنید:
جبران
موقعیت آخرین کاراکتری که سرویس برای تطبیق پیشبینیها در عبارت ورودی استفاده میکند. برای مثال، اگر ورودی
Googleباشد و انحراف ۳ باشد، سرویس درGooتطبیق انجام میدهد. رشتهای که توسط انحراف تعیین میشود، فقط با اولین کلمه در عبارت ورودی تطبیق داده میشود. برای مثال، اگر عبارت ورودیGoogle abcباشد و انحراف ۳ باشد، سرویس سعی میکند باGoo abcتطبیق انجام دهد. اگر هیچ انحرافی ارائه نشود، سرویس از کل عبارت استفاده میکند. انحراف معمولاً باید روی موقعیت نشانگر متن تنظیم شود.منشأ
نقطه مبدا که از آن فاصله مستقیم تا مقصد محاسبه میشود (به صورت
distance_metersبرگردانده میشود). اگر این مقدار حذف شود، فاصله مستقیم برگردانده نمیشود. باید به صورتlatitude,longitudeمشخص شود.شعاع
فاصلهای (برحسب متر) را که نتایج مکان در آن برگردانده میشود، تعریف میکند. میتوانید با ارسال پارامتر
locationوradius، نتایج را به یک دایره مشخص شده متمایل کنید. انجام این کار به سرویس Places دستور میدهد که ترجیح دهد نتایج را در آن دایره نشان دهد؛ نتایج خارج از ناحیه تعریف شده همچنان ممکن است نمایش داده شوند.شعاع به طور خودکار بسته به نوع جستجو و سایر پارامترها، به حداکثر مقدار محدود میشود.
- تکمیل خودکار: ۵۰،۰۰۰ متر
- جستجوی نزدیک:
- با
keywordیاname: ۵۰،۰۰۰ متر - بدون
keywordیاname- تا ۵۰۰۰۰ متر، به صورت پویا بر اساس تراکم منطقه، مستقل از پارامتر
rankby، تنظیم میشود. - هنگام استفاده از
rankby=distance، پارامتر radius پذیرفته نمیشود و منجر به خطایINVALID_REQUESTمیشود.
- تا ۵۰۰۰۰ متر، به صورت پویا بر اساس تراکم منطقه، مستقل از پارامتر
- با
- تکمیل خودکار پرس و جو: ۵۰،۰۰۰ متر
- جستجوی متن: ۵۰،۰۰۰ متر
منطقه
کد منطقه، که به عنوان یک مقدار دو کاراکتری ccTLD ("دامنه سطح بالا") مشخص شده است. اکثر کدهای ccTLD با کدهای ISO 3166-1 یکسان هستند، با برخی استثنائات قابل توجه. به عنوان مثال، ccTLD بریتانیا "uk" (.co.uk) است در حالی که کد ISO 3166-1 آن "gb" است (از نظر فنی برای موجودیت "پادشاهی متحده بریتانیای کبیر و ایرلند شمالی").
توکن جلسه
یک رشته تصادفی که یک جلسه تکمیل خودکار را برای اهداف صورتحساب مشخص میکند.
جلسه زمانی شروع میشود که کاربر شروع به تایپ یک پرسوجو میکند و زمانی که یک مکان را انتخاب میکند و فراخوانی Place Details انجام میشود، پایان مییابد. هر جلسه میتواند چندین پرسوجو داشته باشد و پس از آن یک مکان انتخاب شود. کلید(های) API مورد استفاده برای هر درخواست در یک جلسه باید متعلق به همان پروژه Google Cloud Console باشد. پس از پایان یک جلسه، توکن دیگر معتبر نیست؛ برنامه شما باید برای هر جلسه یک توکن جدید تولید کند. اگر پارامتر
sessiontokenحذف شود، یا اگر از یک توکن جلسه دوباره استفاده کنید، هزینه جلسه طوری محاسبه میشود که انگار هیچ توکن جلسهای ارائه نشده است (هزینه هر درخواست جداگانه محاسبه میشود).ما دستورالعملهای زیر را توصیه میکنیم:
- از توکنهای جلسه برای تمام جلسات تکمیل خودکار استفاده کنید.
- برای هر جلسه یک توکن جدید ایجاد کنید. استفاده از UUID نسخه ۴ توصیه میشود.
- مطمئن شوید که کلید(های) API مورد استفاده برای همه درخواستهای Place Autocomplete و Place Details در یک جلسه متعلق به یک پروژه Cloud Console باشند.
- حتماً برای هر جلسه جدید، یک توکن جلسه منحصر به فرد ارسال کنید. استفاده از یک توکن برای بیش از یک جلسه منجر به این میشود که برای هر درخواست، هزینه جداگانه محاسبه شود.
محدودیتهای سختگیرانه
فقط مکانهایی را برمیگرداند که دقیقاً درون ناحیه تعریفشده توسط
locationوradiusقرار دارند. این یک محدودیت است، نه یک بایاس، به این معنی که نتایج خارج از این ناحیه حتی اگر با ورودی کاربر مطابقت داشته باشند، بازگردانده نمیشوند.انواع
شما میتوانید با ارسال پارامتر
types، نتایج حاصل از یک درخواست Place Autocomplete را به نوع خاصی محدود کنید. این پارامتر یک نوع یا مجموعهای از انواع را مشخص میکند، همانطور که در Place Types ذکر شده است. اگر چیزی مشخص نشود، همه انواع بازگردانده میشوند.یک مکان فقط میتواند یک نوع اصلی از انواع ذکر شده در جدول ۱ یا جدول ۲ داشته باشد. برای مثال، هتلی که در آن غذا سرو میشود، ممکن است فقط با
types=lodgingبرگردانده شود و نه باtypes=restaurant.برای مقدار پارامتر
typesمیتوانید یکی از موارد زیر را مشخص کنید:حداکثر پنج مقدار از جدول ۱ یا جدول ۲. برای چندین مقدار، هر مقدار را با علامت
|(نوار عمودی) از هم جدا کنید. برای مثال:types=book_store|cafeهر فیلتر پشتیبانی شده در جدول 3. شما نمیتوانید مجموعههای نوع را با هم ترکیب کنید.
در صورت وجود شرایط زیر، درخواست با خطای
INVALID_REQUESTرد خواهد شد:
مثالهای تکمیل خودکار مکان (قدیمی)
درخواستی برای مؤسسات حاوی رشته "Amoeba" در منطقهای با مرکزیت سانفرانسیسکو، کالیفرنیا:
آدرس اینترنتی
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696 &radius=500 &key=YOUR_API_KEY
حلقه زدن
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=YOUR_API_KEY'همان درخواست، محدود به نتایجی در محدوده ۵۰۰ متری خیابانهای اشبری و هایت، سانفرانسیسکو:
آدرس اینترنتی
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696&radius=500 &strictbounds=true &key=YOUR_API_KEY
حلقه زدن
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&strictbounds=true&key=YOUR_API_KEY'درخواستی برای آدرسهایی که شامل «ویکت» هستند و نتایج به زبان فرانسوی:
آدرس اینترنتی
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=geocode &language=fr &key=YOUR_API_KEY
حلقه زدن
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=YOUR_API_KEY'درخواستی برای شهرهایی که شامل «ویکت» هستند و نتایج به زبان پرتغالی برزیلی:
آدرس اینترنتی
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=(cities) &language=pt_BR&key=YOUR_API_KEY
حلقه زدن
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=YOUR_API_KEY'توجه داشته باشید که باید کلید API را در این مثالها با کلید خودتان جایگزین کنید.
پاسخ تکمیل خودکار (قدیمی) را قرار دهید
پاسخهای تکمیل خودکار مکان (Legacy) در قالبی که توسط پرچم output در مسیر URL درخواست نشان داده شده است، بازگردانده میشوند. نتایج زیر نشاندهندهی آنچه ممکن است برای یک پرسوجو با پارامترهای زیر بازگردانده شود، میباشد:
آدرس اینترنتی
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Paris &types=geocode &key=YOUR_API_KEY
حلقه زدن
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&key=YOUR_API_KEY'جیسون
{ "predictions": [ { "description": "Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "reference": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "France", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "France" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TX, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJmysnFgZYSoYRSfPTL2YJuck", "reference": "ChIJmysnFgZYSoYRSfPTL2YJuck", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TX, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TX" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TN, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "reference": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TN, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TN" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, Brant, ON, Canada", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsamfQbVtLIgR-X18G75Hyi0", "reference": "ChIJsamfQbVtLIgR-X18G75Hyi0", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "Brant, ON, Canada", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "Brant" }, { "offset": 14, "value": "ON" }, { "offset": 18, "value": "Canada" }, ], "types": ["neighborhood", "political", "geocode"], }, { "description": "Paris, KY, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "reference": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "KY, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "KY" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, ], "status": "OK", }
XML
<?xml version="1.0" encoding="UTF-8"?> <AutocompletionResponse> <status>OK</status> <prediction> <description>Paris, France</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>France</value> <offset>7</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TX, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJmysnFgZYSoYRSfPTL2YJuck</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TX</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJmysnFgZYSoYRSfPTL2YJuck</place_id> <structured_formatting> <description>Paris</description> <subdescription>TX, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TN, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJ4zHP-Sije4gRBDEsVxunOWg</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TN</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJ4zHP-Sije4gRBDEsVxunOWg</place_id> <structured_formatting> <description>Paris</description> <subdescription>TN, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, Brant, ON, Canada</description> <type>neighborhood</type> <type>political</type> <type>geocode</type> <reference>ChIJsamfQbVtLIgR-X18G75Hyi0</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>Brant</value> <offset>7</offset> </term> <term> <value>ON</value> <offset>14</offset> </term> <term> <value>Canada</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsamfQbVtLIgR-X18G75Hyi0</place_id> <structured_formatting> <description>Paris</description> <subdescription>Brant, ON, Canada</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, KY, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJsU7_xMfKQ4gReI89RJn0-RQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>KY</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsU7_xMfKQ4gReI89RJn0-RQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>KY, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
مکانهاتکمیل خودکارپاسخ
| میدان | مورد نیاز | نوع | توضیحات |
|---|---|---|---|
| مورد نیاز | آرایه < پیشبینی خودکار مکان > | شامل مجموعهای از پیشبینیها است. برای اطلاعات بیشتر به PlaceAutocompletePrediction مراجعه کنید. |
| مورد نیاز | مکانهاتکمیل خودکاروضعیت | شامل وضعیت درخواست است و ممکن است حاوی اطلاعات اشکالزدایی باشد تا به شما در پیگیری دلیل عدم موفقیت درخواست کمک کند. برای اطلاعات بیشتر به PlacesAutocompleteStatus مراجعه کنید. |
| اختیاری | رشته | وقتی سرویس کد وضعیتی غیر از |
| اختیاری | آرایه | وقتی سرویس اطلاعات اضافی در مورد مشخصات درخواست را برمیگرداند، ممکن است یک فیلد |
از نکات جالب توجه در نتایج، عناصر place_id هستند که میتوانند برای درخواست جزئیات دقیقتر در مورد مکان با استفاده از یک پرسوجوی جداگانه مورد استفاده قرار گیرند. به درخواستهای Place Details (Legacy) مراجعه کنید.
یک پاسخ XML شامل یک عنصر <AutocompletionResponse> با دو نوع عنصر فرزند است:
- یک عنصر
<status>حاوی فرادادههای مربوط به درخواست است. به کدهای وضعیت زیر مراجعه کنید. - صفر یا چند عنصر
<prediction>که هر کدام حاوی اطلاعاتی درباره یک مکان واحد هستند. برای اطلاعات مربوط به این نتایج به نتایج تکمیل خودکار مکان (Legacy) مراجعه کنید. API مکانها تا 5 نتیجه را برمیگرداند.
توصیه میکنیم از json به عنوان پرچم خروجی ترجیحی استفاده کنید، مگر اینکه برنامه شما به دلایلی به xml نیاز داشته باشد. پردازش درختهای XML نیاز به کمی دقت دارد، به طوری که به گرهها و عناصر مناسب ارجاع دهید. برای کمک به پردازش XML ، به پردازش XML با XPath مراجعه کنید.
مکانهاتکمیل خودکاروضعیت
کدهای وضعیتی که توسط سرویس برگردانده میشوند.
-
OKنشان میدهد که درخواست API با موفقیت انجام شده است. -
ZERO_RESULTSنشان میدهد که جستجو موفقیتآمیز بوده اما هیچ نتیجهای برنگردانده است. این ممکن است در صورتی رخ دهد که جستجو در یک مکان دور از دسترس از مرز مجاز عبور کرده باشد. -
INVALID_REQUESTنشان میدهد که درخواست API ناقص بوده است، که عموماً به دلیل پارامترinputاز دست رفته است. -
OVER_QUERY_LIMITکه نشاندهندهی هر یک از موارد زیر است:- شما از محدودیتهای QPS فراتر رفتهاید.
- پرداخت در حساب شما فعال نشده است.
- اعتبار ماهانه ۲۰۰ دلاری یا سقف استفادهای که خودتان تعیین کردهاید، تمام شده است.
- روش پرداخت ارائه شده دیگر معتبر نیست (برای مثال، اعتبار کارت اعتباری منقضی شده است).
-
REQUEST_DENIEDنشان میدهد که درخواست شما رد شده است، عموماً به دلایل زیر:- درخواست فاقد کلید API است.
- پارامتر
keyنامعتبر است.
-
UNKNOWN_ERRORکه نشاندهندهی خطای ناشناخته است.
وقتی سرویس Places نتایج JSON را از یک جستجو برمیگرداند، آنها را در یک آرایه predictions قرار میدهد. حتی اگر سرویس هیچ نتیجهای برنگرداند (مثلاً اگر location دور باشد)، باز هم یک آرایه predictions خالی برمیگرداند. پاسخهای XML شامل صفر یا چند عنصر <prediction> هستند.
پیشبینی تکمیل خودکار مکان
| میدان | مورد نیاز | نوع | توضیحات |
|---|---|---|---|
| مورد نیاز | رشته | شامل نام قابل خواندن توسط انسان برای نتیجهی برگردانده شده است. برای نتایج |
| مورد نیاز | آرایه < PlaceAutocompleteMatchedSubstring > | فهرستی از زیررشتههایی که محل عبارت وارد شده را در متن نتیجه پیشبینی توصیف میکنند، به طوری که در صورت انتخاب، بتوان آن عبارت را برجسته کرد. برای اطلاعات بیشتر به PlaceAutocompleteMatchedSubstring مراجعه کنید. |
| مورد نیاز | PlaceAutocompleteStructuredFormat | متن از پیش قالببندیشدهای را ارائه میدهد که میتواند در نتایج تکمیل خودکار شما نمایش داده شود. این محتوا باید به همان شکلی که هست خوانده شود. آدرس قالببندیشده را به صورت برنامهنویسی تجزیه نکنید. برای اطلاعات بیشتر به PlaceAutocompleteStructuredFormat مراجعه کنید. |
| مورد نیاز | آرایه < PlaceAutocompleteTerm > | شامل آرایهای از اصطلاحات است که هر بخش از توضیحات برگردانده شده را مشخص میکند (یک بخش از توضیحات معمولاً با کاما خاتمه مییابد). هر ورودی در آرایه دارای یک فیلد برای اطلاعات بیشتر به PlaceAutocompleteTerm مراجعه کنید. |
| اختیاری | عدد صحیح | فاصله مستقیم از مبدا بر حسب متر. این فیلد فقط برای درخواستهایی که با |
| اختیاری | رشته | یک شناسه متنی که به طور منحصر به فرد یک مکان را مشخص میکند. برای بازیابی اطلاعات در مورد مکان، این شناسه را در فیلد placeId از یک درخواست Places API ارسال کنید. برای اطلاعات بیشتر در مورد شناسههای مکان، به نمای کلی شناسههای مکان مراجعه کنید. |
| اختیاری | رشته | به place_id مراجعه کنید. |
| اختیاری | آرایه | شامل آرایهای از انواع است که به این مکان اعمال میشوند. برای مثال: |
PlaceAutocompleteMatchedSubstring
| میدان | مورد نیاز | نوع | توضیحات |
|---|---|---|---|
| مورد نیاز | شماره | طول زیررشتهی منطبق در متن نتیجهی پیشبینی. |
| مورد نیاز | شماره | محل شروع زیررشتهی منطبق در متن نتیجهی پیشبینی. |
PlaceAutocompleteStructuredFormat
| میدان | مورد نیاز | نوع | توضیحات |
|---|---|---|---|
| مورد نیاز | رشته | شامل متن اصلی پیشبینی، معمولاً نام مکان، است. |
| مورد نیاز | آرایه < PlaceAutocompleteMatchedSubstring > | شامل آرایهای با مقدار برای اطلاعات بیشتر به PlaceAutocompleteMatchedSubstring مراجعه کنید. |
| اختیاری | رشته | شامل متن ثانویه یک پیشبینی، معمولاً موقعیت مکانی آن مکان، است. |
| اختیاری | آرایه < PlaceAutocompleteMatchedSubstring > | شامل آرایهای با مقدار برای اطلاعات بیشتر به PlaceAutocompleteMatchedSubstring مراجعه کنید. |
PlaceAutocompleteTerm
| میدان | مورد نیاز | نوع | توضیحات |
|---|---|---|---|
| مورد نیاز | شماره | موقعیت شروع این اصطلاح را در توضیحات، که با کاراکترهای یونیکد اندازهگیری میشود، تعریف میکند. |
| مورد نیاز | رشته | متن اصطلاح. |
بهینهسازی تکمیل خودکار مکان (Legacy)
این بخش بهترین شیوهها را برای کمک به شما در استفادهی حداکثری از سرویس تکمیل خودکار مکان (قدیمی) شرح میدهد.
در اینجا چند دستورالعمل کلی آورده شده است:
- سریعترین راه برای توسعه یک رابط کاربری کارآمد، استفاده از ویجت Maps JavaScript API Place Autocomplete (Legacy) ، ویجت Places SDK برای اندروید Place Autocomplete (Legacy) یا کنترل رابط کاربری Places SDK برای iOS Place Autocomplete (Legacy) است.
- از همان ابتدا فیلدهای داده ضروری Place Autocomplete (Legacy) را درک کنید.
- فیلدهای Location biasing و location restriction اختیاری هستند اما میتوانند تأثیر قابل توجهی بر عملکرد تکمیل خودکار داشته باشند.
- از مدیریت خطا استفاده کنید تا مطمئن شوید که برنامه شما در صورت بروز خطا توسط API، به طور مناسب از رده خارج میشود.
- مطمئن شوید که برنامه شما وقتی هیچ انتخابی وجود ندارد، کار میکند و به کاربران راهی برای ادامه ارائه میدهد.
بهترین شیوههای بهینهسازی هزینه
بهینهسازی هزینه پایه
برای بهینهسازی هزینه استفاده از سرویس تکمیل خودکار مکان (Legacy)، از ماسکهای فیلد در ویجتهای جزئیات مکان (Legacy) و تکمیل خودکار مکان (Legacy) استفاده کنید تا فقط فیلدهای داده تکمیل خودکار مکان (Legacy) مورد نیاز شما را برگردانید.
بهینهسازی پیشرفته هزینه
پیادهسازی برنامهریزیشدهی Place Autocomplete (Legacy) را برای دسترسی به SKU در نظر بگیرید: Autocomplete - Per Request pricing و درخواست نتایج Geocoding API در مورد مکان انتخابشده به جای Place Details (Legacy). قیمتگذاری بر اساس درخواست همراه با Geocoding API در صورت برآورده شدن هر دو شرط زیر، مقرونبهصرفهتر از قیمتگذاری بر اساس هر جلسه (مبتنی بر جلسه) است:
- اگر فقط به طول/عرض جغرافیایی یا آدرس مکان انتخاب شده کاربر نیاز دارید، API مربوط به Geocoding این اطلاعات را با هزینهای کمتر از فراخوانی Place Details (Legacy) ارائه میدهد.
- اگر کاربران یک پیشبینی تکمیل خودکار را در بین میانگین چهار درخواست پیشبینی تکمیل خودکار (قدیمی) یا کمتر انتخاب کنند، قیمتگذاری بر اساس هر درخواست ممکن است مقرونبهصرفهتر از قیمتگذاری بر اساس هر جلسه باشد.
آیا درخواست شما به اطلاعات دیگری غیر از آدرس و طول و عرض جغرافیایی پیشبینی انتخاب شده نیاز دارد؟
بله، نیاز به توضیحات بیشتر دارد
از تکمیل خودکار مکان مبتنی بر جلسه (Legacy) به همراه جزئیات مکان (Legacy) استفاده کنید.
از آنجایی که برنامه شما به جزئیات مکان (Legacy) مانند نام مکان، وضعیت کسب و کار یا ساعات کاری نیاز دارد، پیادهسازی شما از قابلیت تکمیل خودکار مکان (Legacy) باید از یک توکن جلسه ( به صورت برنامهنویسی یا ساخته شده در ویجتهای جاوا اسکریپت ، اندروید یا iOS ) به ازای هر جلسه به علاوه SKUهای داده مکانهای قابل اجرا، بسته به فیلدهای داده مکانی که درخواست میکنید، استفاده کند. 1
پیادهسازی ویجت
مدیریت جلسه به طور خودکار در ویجتهای جاوا اسکریپت ، اندروید یا iOS تعبیه شده است. این شامل درخواستهای تکمیل خودکار مکان (Legacy) و درخواست جزئیات مکان (Legacy) در پیشبینی انتخاب شده میشود. حتماً پارامتر fields را مشخص کنید تا مطمئن شوید که فقط فیلدهای داده تکمیل خودکار مکان (Legacy) مورد نیاز خود را درخواست میکنید.
پیادهسازی برنامهریزیشده
از یک توکن جلسه با درخواستهای تکمیل خودکار مکان (Legacy) خود استفاده کنید. هنگام درخواست جزئیات مکان (Legacy) در مورد پیشبینی انتخاب شده، پارامترهای زیر را وارد کنید:
- شناسه مکان از پاسخ تکمیل خودکار مکان (قدیمی)
- توکن جلسه مورد استفاده در درخواست تکمیل خودکار مکان (Legacy)
- پارامتر
fieldsکه فیلدهای داده Place Autocomplete (Legacy) مورد نیاز شما را مشخص میکند
خیر، فقط به آدرس و موقعیت مکانی نیاز دارد
بسته به عملکرد استفاده از قابلیت تکمیل خودکار مکان (Legacy)، API مربوط به ژئوکدینگ میتواند گزینه مقرونبهصرفهتری نسبت به جزئیات مکان (Legacy) برای برنامه شما باشد. کارایی تکمیل خودکار مکان (Legacy) هر برنامه بسته به اینکه کاربران چه اطلاعاتی را وارد میکنند، برنامه در کجا استفاده میشود و اینکه آیا بهترین شیوههای بهینهسازی عملکرد پیادهسازی شدهاند یا خیر، متفاوت است.
برای پاسخ به سوال زیر، قبل از انتخاب پیشبینی Place Autocomplete (Legacy) در برنامه خود، تجزیه و تحلیل کنید که کاربر به طور متوسط چند کاراکتر تایپ میکند.
آیا کاربران شما به طور متوسط در چهار درخواست یا کمتر، پیشبینی تکمیل خودکار مکان (Legacy) را انتخاب میکنند؟
بله
تکمیل خودکار مکان (Legacy) را به صورت برنامهنویسی شده و بدون توکنهای جلسه پیادهسازی کنید و API مربوط به Geocoding را روی پیشبینی مکان انتخاب شده فراخوانی کنید.
API ژئوکدینگ آدرسها و مختصات طول و عرض جغرافیایی را ارائه میدهد. انجام چهار درخواست تکمیل خودکار به ازای هر درخواست به علاوه یک فراخوانی API ژئوکدینگ در مورد پیشبینی مکان انتخاب شده، کمتر از هزینه تکمیل خودکار مکان (Legacy) به ازای هر جلسه به ازای هر جلسه است. 1
در نظر داشته باشید که از بهترین شیوههای عملکرد استفاده کنید تا به کاربران خود کمک کنید پیشبینی مورد نظر خود را با تعداد کاراکترهای کمتری دریافت کنند.
خیر
از تکمیل خودکار مکان مبتنی بر جلسه (Legacy) به همراه جزئیات مکان (Legacy) استفاده کنید.
از آنجایی که میانگین تعداد درخواستهایی که انتظار دارید قبل از انتخاب پیشبینی تکمیل خودکار مکان (Legacy) توسط کاربر انجام شود، از هزینه قیمتگذاری به ازای هر جلسه بیشتر است، پیادهسازی تکمیل خودکار مکان (Legacy) شما باید از یک توکن جلسه برای هر دو درخواست تکمیل خودکار مکان (Legacy) و درخواست جزئیات مکان (Legacy) مرتبط به ازای هر جلسه استفاده کند. 1
پیادهسازی ویجت
مدیریت جلسه به طور خودکار در ویجتهای جاوا اسکریپت ، اندروید یا iOS تعبیه شده است. این شامل درخواستهای تکمیل خودکار مکان (Legacy) و درخواست جزئیات مکان (Legacy) در پیشبینی انتخاب شده میشود. حتماً پارامتر fields را مشخص کنید تا مطمئن شوید که فقط فیلدهای مورد نیاز خود را درخواست میکنید.
پیادهسازی برنامهریزیشده
از یک توکن جلسه با درخواستهای تکمیل خودکار مکان (Legacy) خود استفاده کنید. هنگام درخواست جزئیات مکان (Legacy) در مورد پیشبینی انتخاب شده، پارامترهای زیر را وارد کنید:
- شناسه مکان از پاسخ تکمیل خودکار مکان (قدیمی)
- توکن جلسه مورد استفاده در درخواست تکمیل خودکار مکان (Legacy)
- پارامتر
fieldsکه فیلدهای داده پایه مانند آدرس و هندسه را مشخص میکند
درخواستهای تکمیل خودکار (قدیمی) را به تعویق بیندازید
شما میتوانید از استراتژیهایی مانند به تأخیر انداختن درخواست تکمیل خودکار مکان (Legacy) تا زمانی که کاربر سه یا چهار کاراکتر اول را تایپ کرده باشد، استفاده کنید تا برنامه شما درخواستهای کمتری ارسال کند. به عنوان مثال، ایجاد درخواستهای تکمیل خودکار مکان (Legacy) برای هر کاراکتر پس از تایپ کاراکتر سوم توسط کاربر به این معنی است که اگر کاربر هفت کاراکتر تایپ کند و سپس پیشبینیای را انتخاب کند که شما برای آن یک درخواست API Geocoding ارسال میکنید، هزینه کل برای 4 تکمیل خودکار مکان (Legacy) به ازای هر درخواست + Geocoding خواهد بود. 1
اگر تأخیر در درخواستها میتواند میانگین درخواستهای برنامهنویسی شما را به زیر چهار برساند، میتوانید از راهنماییهای مربوط به تکمیل خودکار مکان (Legacy) با پیادهسازی API Geocoding پیروی کنید. توجه داشته باشید که تأخیر در درخواستها میتواند توسط کاربری که انتظار دارد با هر ضربه کلید جدید، پیشبینیها را ببیند، به عنوان تأخیر تلقی شود.
استفاده از بهترین شیوههای عملکرد را در نظر بگیرید تا به کاربران خود کمک کنید پیشبینی مورد نظر خود را با تعداد کاراکترهای کمتری دریافت کنند.
برای اطلاع از هزینهها، به لیست قیمتهای پلتفرم نقشههای گوگل مراجعه کنید.
بهترین شیوههای عملکرد
دستورالعملهای زیر روشهای بهینهسازی عملکرد تکمیل خودکار مکان (Legacy) را شرح میدهند:
- محدودیتهای کشور، سوگیری موقعیت مکانی و (برای پیادهسازیهای برنامهنویسیشده) ترجیح زبان را به پیادهسازی تکمیل خودکار مکان (Legacy) خود اضافه کنید. ترجیح زبان با ویجتها لازم نیست زیرا آنها ترجیحات زبان را از مرورگر یا دستگاه تلفن همراه کاربر انتخاب میکنند.
- اگر قابلیت تکمیل خودکار مکان (Legacy) با نقشه همراه باشد، میتوانید مکان را بر اساس نمای نقشه تنظیم کنید.
- در شرایطی که کاربر یکی از پیشبینیهای Place Autocomplete (Legacy) را انتخاب نمیکند، عموماً به این دلیل که هیچکدام از این پیشبینیها آدرس-نتیجه مورد نظر نیستند، میتوانید از ورودی اصلی کاربر برای تلاش جهت دریافت نتایج مرتبطتر استفاده مجدد کنید:
- اگر انتظار دارید کاربر فقط اطلاعات آدرس را وارد کند، از ورودی اصلی کاربر در فراخوانی Geocoding API استفاده مجدد کنید.
- اگر انتظار دارید کاربر برای یک مکان خاص با نام یا آدرس جستجو کند، از درخواست Place Details (Legacy) استفاده کنید. اگر نتایج فقط در یک منطقه خاص مورد انتظار است، از location biasing استفاده کنید.
- کاربرانی که آدرسهای فرعی، مانند آدرسهای واحدها یا آپارتمانهای خاص در یک ساختمان را وارد میکنند. برای مثال، آدرس چکی "Stroupežnického 3191/17, Praha" در تکمیل خودکار مکان (Legacy) پیشبینی جزئی ارائه میدهد.
- کاربرانی که آدرسهایی با پیشوندهای قطعه جادهای مانند «خیابان بیست و نهم، شماره ۲۳-۳۰، کوئینز» در شهر نیویورک یا «بزرگراه کامهامها، شماره ۴۷-۳۸۰، کانئوهه» در جزیره کائوآئی در هاوایی وارد میکنند.
سوگیری مکانی
با ارسال پارامتر location و پارامتر radius ، نتایج را به یک منطقه مشخص شده متمایل میکند. این به Place Autocomplete (Legacy) دستور میدهد که ترجیح دهد نتایج را در منطقه تعریف شده نشان دهد. نتایج خارج از منطقه تعریف شده همچنان ممکن است نمایش داده شوند. میتوانید از پارامتر includedRegionCodes برای فیلتر کردن نتایج استفاده کنید تا فقط مکانهای داخل یک کشور مشخص شده را نشان دهد.
محدود کردن موقعیت مکانی
با ارسال پارامتر locationRestriction ، نتایج را به یک ناحیه مشخص محدود کنید.
همچنین میتوانید با اضافه کردن پارامتر strictbounds ، نتایج را به ناحیهای که توسط location و پارامتر radius تعریف شده است، محدود کنید. این به Place Autocomplete (Legacy) دستور میدهد که فقط نتایج درون آن ناحیه را برگرداند.