درخواست
درخواست Geocoding API بهصورت زیر است:
https://maps.googleapis.com/maps/api/geocode/outputFormat?parameters
که در آن outputFormat میتواند یکی از مقادیر زیر باشد:
json(توصیهشده) نشاندهنده خروجی در «نشانگذاری شیء جاوا اسکریپت» (JSON) است؛ یاxmlنشاندهنده برونداد در XML است
HTTPS الزامی است.
برخی پارامترها الزامی و برخی اختیاری هستند. همانطور که در نشانیهای وب استاندارد است،
پارامترها بااستفاده از نویسه اَمپرسند (&) از هم جدا میشوند.
در ادامه این صفحه، زمینکدیابی و زمینکدیابی معکوس بهطور جداگانه شرح داده شده است، زیرا پارامترهای متفاوتی برای هر نوع درخواست دردسترس است.
پارامترهای زمینکدیابی (جستجوی طول/عرض جغرافیایی)
پارامترهای الزامی در درخواست زمینکدیابی:
key— کلید میانای برنامهسازی کاربردی برنامه شما. این کلید برنامه شما را برای اهداف مدیریت سهمیه شناسایی میکند. با نحوه دریافت کلید آشنا شوید.باید
addressیاcomponentsیا هر دو را در درخواست مشخص کنید:address— نشانی خیابان یا plus code که میخواهید زمینکدیابی کنید. توجه: زمینکدیابی نشانی مختصات عرض جغرافیایی و طول جغرافیایی یا رشتههای بدون ساختار دیگری را که نشاندهنده نشانی یا Plus Code نیستند حلوفصل نمیکند. درخواستهایی که از این رشتهها استفاده میکنند پشتیبانی نمیشوند و ممکن است منجر به پاسخهای خطا یا رفتار نامشخص شوند. نمونههایی از پُرسمانهای پشتیبانینشده شامل موارد زیر است:
نشانیها را مطابق با قالبی که خدمات پستی ملی کشور مربوطه استفاده میکند مشخص کنید. از افزودن عناصر نشانی اضافی مثل نام کسبوکار و شماره واحد، سوئیت، یا طبقه باید اجتناب شود. عناصر نشانی خیابان باید با فاصله از هم جدا شوند (در اینجا بهصورت url-escaped بهنوع پُرسمان مثال مختصات طول و عرض جغرافیایی. درعوض از زمینکدیابی معکوس استفاده کنید. "37.422131,-122.084801" مفاهیم یا محدودیتهای بسیار زیاد، مانند نام چندین مکان، جاده، یا شهر در یک پُرسمان «Market Street San Francisco San Jose Airport» عناصر نشانی پستی که در Google Maps نشان داده نمیشود «C/O John Smith 123 Main Street»
«P.O. Box 13 San Francisco»نام کسبوکارها، زنجیرهها، یا دستههایی که با مکانهایی ترکیب شدهاند که این نهادها در آنها دردسترس نیستند «Tesco near Dallas, Texas» (تسکو نزدیک دالاس، تگزاس) پرسمانهای مبهم با چند تفسیر «تحویل شارژر» نامهای قدیمی که دیگر استفاده نمیشوند "Middlesex United Kingdom" عناصر یا هدف غیرزمینمکانی «چند قایق در بندر ونتورا وجود دارد؟» نامهای غیررسمی یا نامهای سفارشی «برج هیجان»
«سرسره مارپیچ»%20نشان داده شده است): Plus Code را همانطور که در اینجا نشان داده شده است قالببندی کنید (علامتهای جمع بهaddress=24%20Sussex%20Drive%20Ottawa%20ON
%2Bو فاصلهها به%20تبدیل میشوند):- کد جهانی کد منطقهای ۴ نویسهای و کد محلی ۶ نویسهای یا طولانیتر است (849VCWC8+R9
849VCWC8%2BR9است). - کد ترکیبی کد محلی ۶ نویسهای یا طولانیتر با مکان صریح است (CWC8+R9 Mountain View, CA, USA
CWC8%2BR9%20Mountain%20View%20CA%20USAاست).
- کد جهانی کد منطقهای ۴ نویسهای و کد محلی ۶ نویسهای یا طولانیتر است (849VCWC8+R9
components— فیلتر مؤلفهها با عناصری که با خط عمودی (|) از هم جدا شدهاند. فیلتر مؤلفهها بهعنوان پارامتر اختیاری نیز پذیرفته میشود اگرaddressارائه شده باشد. هر عنصر در فیلتر مؤلفهها از یک جفتcomponent:valueتشکیل شده است و نتایج زمینکدیاب را کاملاً محدود میکند. اطلاعات بیشتر درباره فیلتر کردن مؤلفه را در زیر ببینید.
برای راهنمایی بیشتر، پرسشگان را ببینید.
پارامترهای اختیاری در درخواست «زمینکدیابی»:
bounds— کادر مرزی نمای هدف که نتایج زمینکدیاب در آن بهطور برجستهتری سوگیری میشود. این پارامتر فقط بر نتایج زمینکدیاب تأثیر میگذارد و آنها را کاملاً محدود نمیکند. (برای اطلاعات بیشتر، سوگیری نمای هدف را در زیر ببینید.)language— زبانی که نتایج به آن برگردانده میشود.- فهرست زبانهای پشتیبانیشده را ببینید. Google اغلب زبانهای پشتیبانیشده را بهروز میکند، بنابراین این فهرست ممکن است کامل نباشد.
- اگر
languageارائه نشده باشد، زمینکدیاب تلاش میکند از زبان ترجیحی مشخصشده در سرصفحهAccept-Languageیا زبان بومی دامنهای که درخواست از آن ارسال شده است استفاده کند. - زمینکدیاب تمام تلاش خود را میکند تا نشانی خیابانی ارائه دهد که هم برای کاربر و هم برای افراد محلی قابلخواندن باشد. برای دستیابی به این هدف، نشانیهای خیابان را به زبان محلی برمیگرداند، درصورت لزوم به نویسهای که برای کاربر قابلخواندن باشد نویسهگردانی میکند، و زبان ترجیحی را رعایت میکند. همه نشانیهای دیگر به زبان ترجیحی برگردانده میشوند. همه مؤلفههای نشانی به همان زبان برگردانده میشوند، که از مؤلفه اول انتخاب شده است.
- اگر نامی به زبان ترجیحی دردسترس نباشد، زمینکدیاب از نزدیکترین مطابقت استفاده میکند.
- زبان ترجیحی تأثیر کمی بر مجموعه نتایجی دارد که میانای برنامهسازی کاربردی برای برگرداندن انتخاب میکند و ترتیبی که برگردانده میشوند. زمینکدیاب اختصارها را بسته به زبان بهطور متفاوتی تفسیر میکند، مثلاً اختصارهای انواع خیابان، یا مترادفهایی که ممکن است در یک زبان معتبر باشند اما در زبان دیگر نه. برای مثال، utca و tér در زبان مجاری بهترتیب مترادف خیابان و میدان هستند.
region— کد منطقه، که بهعنوان مقدار دو نویسهای ccTLD («دامنه سطح بالا») مشخص شده است. این پارامتر فقط بر نتایج زمینکدیاب تأثیر میگذارد و آنها را کاملاً محدود نمیکند. (برای اطلاعات بیشتر، سوگیری منطقهای را در زیر ببینید.) پارامتر همچنین میتواند براساس قانون ذیربط بر نتایج تأثیر بگذارد.components— فیلتر مؤلفهها با عناصری که با خط عمودی (|) از هم جدا شدهاند. اگر درخواست شاملaddressنباشد، فیلتر مؤلفهها الزامی است. هر عنصر در فیلتر مؤلفهها از یک جفتcomponent:valueتشکیل شده است و نتایج زمینکدیاب را کاملاً محدود میکند. اطلاعات بیشتر درباره فیلتر کردن مؤلفه را در زیر ببینید.extra_computations— از این پارامتر برای مشخص کردن ویژگیهای اضافی زیر در پاسخ استفاده کنید:ADDRESS_DESCRIPTORS— برای جزئیات بیشتر، توصیفکنندههای نشانی را ببینید.BUILDING_AND_ENTRANCES— برای جزئیات بیشتر، ورودیها و طرح کلی ساختمان را ببینید.
extra_computationsرا در درخواست برای هر ویژگی اضافه کنید، برای مثال:extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES
پاسخها
پاسخهای زمینکدیابی در قالبی که با پرچم output در درخواست نشانی وب مشخص شده است، یا بهطور پیشفرض در قالب JSON برگردانده میشوند.
در این مثال، Geocoding API درخواست پاسخ json
برای پُرسمان در نشانی «1600 Amphitheatre Parkway, Mountain View,
CA» میکند.
این درخواست استفاده از پرچم JSON output را نشان میدهد:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
این درخواست استفاده از پرچم XML output را نشان میدهد:
https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
برای دیدن نمونه پاسخهای JSON و XML، برگههای زیر را انتخاب کنید.
(قالب) JSON
{ "results": [ { "address_components": [ { "long_name": "1600", "short_name": "1600", "types": [ "street_number" ] }, { "long_name": "Amphitheatre Parkway", "short_name": "Amphitheatre Pkwy", "types": [ "route" ] }, { "long_name": "Mountain View", "short_name": "Mountain View", "types": [ "locality", "political" ] }, { "long_name": "Santa Clara County", "short_name": "Santa Clara County", "types": [ "administrative_area_level_2", "political" ] }, { "long_name": "California", "short_name": "CA", "types": [ "administrative_area_level_1", "political" ] }, { "long_name": "United States", "short_name": "US", "types": [ "country", "political" ] }, { "long_name": "94043", "short_name": "94043", "types": [ "postal_code" ] }, { "long_name": "1351", "short_name": "1351", "types": [ "postal_code_suffix" ] } ], "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "geometry": { "location": { "lat": 37.4222804, "lng": -122.0843428 }, "location_type": "ROOFTOP", "viewport": { "northeast": { "lat": 37.4237349802915, "lng": -122.083183169709 }, "southwest": { "lat": 37.4210370197085, "lng": -122.085881130292 } } }, "place_id": "ChIJRxcAvRO7j4AR6hm6tys8yA8", "plus_code": { "compound_code": "CWC8+W7 Mountain View, CA", "global_code": "849VCWC8+W7" }, "types": [ "street_address" ] } ], "status": "OK" }
توجه داشته باشید که پاسخ JSON حاوی دو عنصر ریشه است:
"status"حاوی فراداده درباره درخواست است. کدهای وضعیت را در زیر ببینید."results"حاوی آرایهای از اطلاعات نشانی زمینکدیابیشده و اطلاعات هندسی است.
بهطور کلی، فقط یک ورودی در آرایه "results" برای جستجوی نشانی برگردانده میشود، هرچند زمینکدیاب ممکن است درصورت مبهم بودن پُرسمانهای نشانی، چندین نتیجه برگرداند.
XML
<GeocodeResponse> <status>OK</status> <result> <type>street_address</type> <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address> <address_component> <long_name>1600</long_name> <short_name>1600</short_name> <type>street_number</type> </address_component> <address_component> <long_name>Amphitheatre Parkway</long_name> <short_name>Amphitheatre Pkwy</short_name> <type>route</type> </address_component> <address_component> <long_name>Mountain View</long_name> <short_name>Mountain View</short_name> <type>locality</type> <type>political</type> </address_component> <address_component> <long_name>Santa Clara County</long_name> <short_name>Santa Clara County</short_name> <type>administrative_area_level_2</type> <type>political</type> </address_component> <address_component> <long_name>California</long_name> <short_name>CA</short_name> <type>administrative_area_level_1</type> <type>political</type> </address_component> <address_component> <long_name>United States</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> <address_component> <long_name>94043</long_name> <short_name>94043</short_name> <type>postal_code</type> </address_component> <geometry> <location> <lat>37.4224428</lat> <lng>-122.0842467</lng> </location> <location_type>ROOFTOP</location_type> <viewport> <southwest> <lat>37.4212648</lat> <lng>-122.0856069</lng> </southwest> <northeast> <lat>37.4239628</lat> <lng>-122.0829089</lng> </northeast> </viewport> </geometry> <place_id>ChIJeRpOeF67j4AR9ydy_PIzPuM</place_id> <plus_code> <global_code>849VCWC8+X8</global_code> <compound_code>CWC8+X8 Mountain View, CA</compound_code> </plus_code> </result> </GeocodeResponse>
توجه داشته باشید که پاسخ XML شامل یک
<GeocodeResponse> و دو عنصر سطح بالا است:
<status>حاوی فراداده درباره درخواست است. کدهای وضعیت را در زیر ببینید.- صفر یا چند عنصر
<result>، که هرکدام حاوی یک مجموعه اطلاعات نشانی زمینکدیابیشده و اطلاعات هندسی است.
پاسخ XML بهطور قابلتوجهی طولانیتر از پاسخ JSON است. به همین دلیل، توصیه میکنیم از json بهعنوان پرچم خروجی ترجیحی استفاده کنید، مگراینکه سرویس شما به دلیلی به xml نیاز داشته باشد.
علاوهبراین، پردازش درختهای XML نیاز به دقت دارد تا به گرهها و عناصر مناسب ارجاع دهید. برای برخیاز الگوهای طراحی توصیهشده برای پردازش خروجی،
تجزیه XML با XPath را ببینید.
- نتایج XML در عنصر ریشه
<GeocodeResponse>قرار میگیرند. - JSON ورودیهای دارای چند عنصر را با آرایههای جمع (
types) نشان میدهد، درحالیکه XML این ورودیها را بااستفاده از چند عنصر مفرد (<type>) نشان میدهد. - عناصر خالی ازطریق آرایههای خالی در JSON نشان داده میشوند، اما با عدم وجود هرگونه
عنصر مشابه در XML. پاسخی که هیچ نتیجهای تولید نمیکند، برای مثال،
آرایه
resultsخالی در JSON برمیگرداند، اما هیچ عنصر<result>در XML برنمیگرداند.
کدهای وضعیت
فیلد "status" در شیء پاسخ «زمینکدیابی» حاوی وضعیت درخواست است و ممکن است حاوی اطلاعات اشکالزدایی باشد تا به شما کمک کند دلیل کار نکردن زمینکدیابی را ردیابی کنید. فیلد "status" ممکن است حاوی مقادیر زیر باشد:
"OK"نشان میدهد که خطایی رخ نداده است؛ نشانی باموفقیت تجزیه شده است و حداقل یک زمینکد برگردانده شده است."ZERO_RESULTS"نشان میدهد که زمینکدیابی موفقیتآمیز بوده است اما نتیجهای برنگردانده است. این خطا ممکن است زمانی رخ دهد کهaddressناموجودی به زمینکدیاب ارسال شده باشد.OVER_DAILY_LIMITنشاندهنده هریک از موارد زیر است:- کلید میانای برنامهسازی کاربردی وجود ندارد یا نامعتبر است.
- صدور صورتحساب در حسابتان فعال نشده است.
- از سقف استفادهای که خودتان تعیین کردهاید فراتر رفتهاید.
- روش پرداخت ارائهشده دیگر معتبر نیست (برای مثال، کارت اعتباری منقضی شده است).
برای آشنایی با نحوه رفع این مشکل، پرسشگان Maps را ببینید.
"OVER_QUERY_LIMIT"نشان میدهد که از سهمیهتان فراتر رفتهاید."REQUEST_DENIED"نشان میدهد که درخواستتان رد شده است."INVALID_REQUEST"معمولاً نشان میدهد که پُرسمان (address،componentsیاlatlng) وجود ندارد."UNKNOWN_ERROR"نشان میدهد که درخواست بهدلیل خطای سرور پردازش نشده است. اگر دوباره امتحان کنید، ممکن است درخواست موفقیتآمیز باشد.
پیامهای خطا
وقتی زمینکدیاب کد وضعیتی غیراز OK برمیگرداند، ممکن است فیلد error_message دیگری در شیء پاسخ «زمینکدیابی» وجود داشته باشد. این
فیلد حاوی اطلاعات دقیقتری درباره دلایل پشت رمز وضعیت
ارائهشده است.
نتایج
وقتی زمینکدیاب نتایج را برمیگرداند، آنها را در آرایه (JSON) results
قرار میدهد. حتی اگر زمینکدیاب هیچ نتیجهای برنگرداند (مثلاً اگر نشانی وجود نداشته باشد)،
بازهم آرایه results خالی برمیگرداند. (پاسخهای XML شامل صفر
یا چند عنصر <result> است.)
یک نتیجه معمولی شامل فیلدهای زیر است:
- آرایه
types[]نشاندهنده نوع نتیجه برگرداندهشده است. این آرایه حاوی مجموعهای از صفر یا چند برچسب است که نوع ویژگی برگرداندهشده در نتیجه را شناسایی میکند. برای مثال، زمینکدیاب «شیکاگو» «محل» را برمیگرداند که نشان میدهد «شیکاگو» یک شهر است، و همچنین «سیاسی» را برمیگرداند که نشان میدهد یک نهاد سیاسی است. برای اطلاعات بیشتر، به انواع نشانی و انواع مؤلفه نشانی مراجعه کنید. formatted_addressرشتهای است که حاوی نشانی قابلخواندن برای انسان این مکان است.اغلب این نشانی معادل نشانی پستی است. توجه داشته باشید که برخی کشورها، مانند پادشاهی متحد، بهدلیل محدودیتهای صدور پروانه، اجازه توزیع نشانیهای پستی واقعی را نمیدهند.
نشانی قالببندیشده بهطور منطقی از یک یا چند مؤلفه نشانی تشکیل شده است. برای مثال، نشانی «111 8th Avenue, New York, NY» از بخشهای زیر تشکیل شده است: «111» (شماره خیابان)، «8th Avenue» (مسیر)، «New York» (شهر)، و «NY» (ایالت امریکا).
نشانی قالببندیشده را بهصورت برنامهنویسی تجزیه نکنید. درعوض باید از مؤلفههای نشانی تکی استفاده کنید که پاسخ میانای برنامهسازی کاربردی علاوهبر فیلد نشانی قالببندیشده شامل آن است.
address_components[]آرایهای است که حاوی بخشهای مجزای قابلاعمال به این نشانی است.هر مؤلفه نشانی معمولاً شامل فیلدهای زیر است:
types[]آرایهای است که نوع مؤلفه نشانی را نشان میدهد. وقتی هیچ نوع شناختهشدهای برای آن مؤلفه نشانی وجود نداشته باشد، مؤلفه نشانی ممکن است آرایه انواع خالی داشته باشد. ممکن است میانای برنامهسازی کاربردی درصورت نیاز مقادیر نوع جدیدی اضافه کند. برای اطلاعات بیشتر، به انواع نشانی و انواع مؤلفه نشانی مراجعه کنید.long_nameشرح نوشتاری کامل یا نام مؤلفه نشانی است که توسط «زمینکدیاب» برگردانده شده است.short_nameنام متنی اختصاری برای مؤلفه نشانی است (درصورت وجود). برای مثال، مؤلفه نشانی برای ایالت آلاسکا ممکن استlong_name«آلاسکا» وshort_name«AK» را بااستفاده از اختصار پستی ۲ حرفی داشته باشد.
به حقایق زیر درباره آرایه
address_components[]توجه کنید:- آرایه مؤلفههای نشانی ممکن است مؤلفههای بیشتری نسبت به
formatted_addressداشته باشد. - این آرایه لزوماً شامل همه نهادهای سیاسی که
حاوی نشانی هستند نمیشود، بهجز آنهایی که در
formatted_addressگنجانده شدهاند. برای بازیابی همه نهادهای سیاسی که حاوی نشانی خاصی هستند، باید از زمینکدیابی معکوس استفاده کنید و طول/عرض جغرافیایی نشانی را بهعنوان پارامتر به درخواست ارسال کنید. - تضمینی وجود ندارد که قالب پاسخ بین درخواستها یکسان باقی بماند. بهویژه، تعداد
address_componentsبراساس نشانی درخواستشده متفاوت است و میتواند درطول زمان برای نشانی یکسان تغییر کند. موقعیت مؤلفه میتواند در آرایه تغییر کند. نوع مؤلفه میتواند تغییر کند. ممکن است مؤلفه خاصی در پاسخ بعدی وجود نداشته باشد.
برای مدیریت آرایه مؤلفهها، باید پاسخ را تجزیه کنید و مقادیر مناسب را ازطریق عبارتها انتخاب کنید. راهنمای تجزیه پاسخ را ببینید.
postcode_localities[]آرایهای است که حداکثر ۱۰۰ محل موجود در کد پستی را نشان میدهد. این فقط زمانی وجود دارد که نتیجه یک کد پستی باشد که شامل چندین محل است.geometryحاوی اطلاعات زیر است:locationحاوی مقدار طول و عرض جغرافیایی زمینکدیابیشده است. برای جستجوی نشانیهای معمولی، این فیلد معمولاً مهمترین فیلد است.location_typeدادههای بیشتری درباره مکان مشخصشده ذخیره میکند. درحالحاضر از مقادیر زیر پشتیبانی میشود:"ROOFTOP"نشان میدهد که نتیجه برگرداندهشده زمینکدیاب دقیقی است که برای آن اطلاعات مکان دقیق تا سطح نشانی خیابان داریم."RANGE_INTERPOLATED"نشان میدهد که نتیجه برگرداندهشده نشاندهنده تقریبی (معمولاً در جاده) است که بین دو نقطه دقیق (مانند تقاطعها) درونیابی شده است. نتایج درونیابیشده معمولاً زمانی برگردانده میشوند که زمینکدیابهای پشتبام برای نشانی خیابان دردسترس نباشند."GEOMETRIC_CENTER"نشان میدهد که نتیجه برگرداندهشده مرکز هندسی نتیجهای مثل چندخطی (برای مثال، خیابان) یا چندضلعی (منطقه) است."APPROXIMATE"نشان میدهد که نتیجه برگرداندهشده تقریبی است.
viewportحاوی ناحیه نمایش توصیهشده برای نمایش نتیجه برگرداندهشده است که بهصورت دو مقدار عرض جغرافیایی و طول جغرافیایی مشخص شده است و گوشهsouthwestوnortheastکادر مرزی ناحیه نمایش را تعریف میکند. معمولاً از نمای دید برای قاببندی نتیجه هنگام نمایش آن به کاربر استفاده میشود.bounds(بهصورت اختیاری برگردانده میشود) کادر محدودکننده را ذخیره میکند که میتواند نتیجه برگرداندهشده را بهطور کامل دربرگیرد. توجه داشته باشید که این مرزها ممکن است با نمای پیشنهادی مطابقت نداشته باشد. (برای مثال، سانفرانسیسکو شامل جزایر فارالون است که ازنظر فنی بخشی از شهر هستند، اما احتمالاً نباید در نمای هدف برگردانده شوند.)
-
plus_code(به کد مکان باز و کدهای plus مراجعه کنید) یک مرجع مکان کدگذاریشده است که از مختصات عرض و طول جغرافیایی مشتق شده است و منطقهای را نشان میدهد: ۱/۸۰۰۰ درجه در ۱/۸۰۰۰ درجه (حدود ۱۴ متر در ۱۴ متر در خط استوا) یا کوچکتر. در جاهایی که نشانی وجود ندارد (جایی که ساختمانها شماره ندارند یا خیابانها نام ندارند)، میتوان از کدهای Plus بهجای نشانی خیابان استفاده کرد. میانای برنامهسازی کاربردی همیشه Plus Code برنمیگرداند.وقتی سرویس plus code را برمیگرداند، بهصورت کد جهانی و کد ترکیبی قالببندی میشود:
global_codeیک کد منطقه ۴ نویسهای و کد محلی ۶ نویسهای یا طولانیتر است (849VCWC8+R9).compound_codeکد محلی ۶ نویسهای یا طولانیتر با مکان صریح است (CWC8+R9, Mountain View, CA, USA). این محتوا را بهصورت برنامهنویسی تجزیه نکنید.
-
partial_matchنشان میدهد که زمینکدیاب مطابقت دقیقی برای درخواست اصلی برنگردانده است، هرچند توانسته است بخشی از نشانی درخواستی را مطابقت دهد. شاید بخواهید درخواست اصلی را ازنظر غلط املایی و/یا نشانی ناقص بررسی کنید.مطابقتهای جزئی اغلب برای نشانیهای خیابانی رخ میدهد که در منطقهای که در درخواست ارسال میکنید وجود ندارند. وقتی درخواستی با دو یا چند مکان در یک محل مطابقت داشته باشد، ممکن است مطابقتهای جزئی نیز برگردانده شود. برای مثال، «Hillpar St, Bristol, UK» مطابقت جزئی برای هر دو Henry Street و Henrietta Street برمیگرداند. توجه داشته باشید که اگر درخواستی شامل بخش نشانی با املای نادرست باشد، سرویس زمینکدیابی ممکن است نشانی جایگزینی پیشنهاد دهد. پیشنهادهایی که به این روش فعال میشوند نیز بهعنوان مطابقت جزئی علامتگذاری میشوند.
place_idشناسه یکتایی است که میتوان از آن با دیگر میاناهای برنامهسازی کاربردی Google استفاده کرد. برای مثال، میتوانید ازplace_idدر درخواست Places API برای دریافت جزئیات کسبوکار محلی، مانند شماره تلفن، ساعت کاری، مرورهای کاربر، و غیره استفاده کنید. نمای کلی شناسه مکان را ببینید.
انواع نشانی و انواع مؤلفه نشانی
آرایه types در پاسخ نشاندهنده
نوع نشانی است. نمونههایی از انواع نشانی شامل نشانی خیابان، کشور، یا نهاد سیاسی است. آرایه types در فیلد address_component نوع هر بخش از نشانی را نشان میدهد. برای مثال، شماره خیابان یا کشور.
نشانیها ممکن است چند نوع داشته باشند. این نوعها ممکن است بهعنوان «برچسب» درنظر گرفته شوند.
برای مثال، بسیاریاز شهرها با نوع political و
locality برچسبگذاری شدهاند.
انواع زیر پشتیبانی میشوند و در هر دو آرایه نوع نشانی و نوع مؤلفه نشانی برگردانده میشوند:
| نوع نشانی | شرح |
|---|---|
street_address |
نشانی دقیق خیابان. |
route |
مسیر نامگذاریشده (مثل «US 101»). |
intersection |
تقاطع اصلی، معمولاً بین دو جاده اصلی. |
political |
نهاد سیاسی. معمولاً این نوع نشاندهنده چندضلعی برخیاز ادارات مدنی است. |
country |
نهاد سیاسی ملی، و معمولاً بالاترین نوع ترتیبی است که توسط «زمینکدیاب» برگردانده میشود. |
administrative_area_level_1 |
نهاد مدنی رده اول زیر سطح کشور. در ایالات متحده، این سطوح اداری ایالتها هستند. برخیاز کشورها این سطوح اداری را ندارند. در بیشتر موارد، نامهای کوتاه administrative_area_level_1 با بخشهای ISO 3166-2 و دیگر فهرستهای پرکاربرد مطابقت دارد؛ بااینحال، این موضوع تضمین نمیشود زیرا نتایج زمینکدیابی ما براساس انواع مختلفی از سیگنالها و دادههای مکان است. |
administrative_area_level_2 |
نهاد مدنی رده دوم زیر سطح کشور. در ایالات متحده، این سطوح اداری شهرستانها هستند. برخیاز کشورها این سطوح اداری را ندارند. |
administrative_area_level_3 |
نهاد مدنی رده سوم زیر سطح کشور. این نوع نشاندهنده تقسیمات کشوری فرعی است. برخیاز کشورها این سطوح اداری را ندارند. |
administrative_area_level_4 |
نهاد مدنی رده چهارم زیر سطح کشور. این نوع نشاندهنده تقسیمات کشوری فرعی است. برخیاز کشورها این سطوح اداری را ندارند. |
administrative_area_level_5 |
نهاد مدنی رده پنجم زیر سطح کشور. این نوع نشاندهنده تقسیمات کشوری فرعی است. برخیاز کشورها این سطوح اداری را ندارند. |
administrative_area_level_6 |
نهاد مدنی رده ششم زیر سطح کشور. این نوع نشاندهنده تقسیمات کشوری فرعی است. برخیاز کشورها این سطوح اداری را ندارند. |
administrative_area_level_7 |
نهاد مدنی رده هفتم زیر سطح کشور. این نوع نشاندهنده تقسیمات کشوری فرعی است. برخیاز کشورها این سطوح اداری را ندارند. |
colloquial_area |
نام جایگزین رایج برای نهاد. |
locality |
نهاد سیاسی شهر یا شهرک ثبتشده. |
sublocality |
نهاد مدنی رده اول زیر سطح محل. برای برخی مکانها ممکن است یکی از انواع اضافی را دریافت کنید: sublocality_level_1 تا sublocality_level_5. هر سطح زیرمنطقه یک نهاد مدنی است. اعداد بزرگتر نشاندهنده منطقه جغرافیایی کوچکتر است. |
neighborhood |
محلهای که نام دارد. |
premise |
مکانی نامگذاریشده، معمولاً ساختمان یا مجموعهای از ساختمانها با نامی مشترک. |
subpremise |
نهادی قابلآدرسدهی در سطحی پایینتر از ملک، مانند آپارتمان، واحد، یا سوئیت. |
plus_code |
مرجع مکان کدگذاریشده، برگرفته از عرض جغرافیایی و طول جغرافیایی. در جاهایی که نشانی خیابان وجود ندارد (ساختمانها شماره ندارند یا خیابانها نام ندارند)، میتوان از Plus Code بهجای نشانی خیابان استفاده کرد. برای جزئیات، به https://plus.codes بروید. |
postal_code |
کد پستی که برای نشانی پستی در کشور استفاده میشود. |
natural_feature |
عارضه طبیعی برجسته. |
airport |
فرودگاه. |
park |
پارک نامگذاریشده. |
point_of_interest |
نقطه موردعلاقه نامگذاریشده. معمولاً این «نقاط موردعلاقه» نهادهای محلی برجستهای هستند که بهراحتی در دسته دیگری قرار نمیگیرند، مثل «ساختمان امپایر استیت» یا «برج ایفل». |
فهرست خالی از انواع نشان میدهد که هیچ نوع شناختهشدهای برای مؤلفه نشانی خاص وجود ندارد (برای مثال، Lieu-dit در فرانسه).
علاوهبر موارد بالا، مؤلفههای نشانی ممکن است شامل انواع فهرستشده در زیر باشد.
| نوع عنصر نشانی | شرح |
|---|---|
floor |
طبقه نشانی ساختمان. |
establishment |
معمولاً مکانی است که هنوز دستهبندی نشده است. |
landmark |
مکانی در این اطراف که بهعنوان مرجع برای کمک به پیمایش استفاده میشود. |
point_of_interest |
نقطه موردعلاقه نامگذاریشده. |
parking |
پارکینگ یا سازه پارکینگ. |
post_box |
صندوق پستی خاص. |
postal_town |
گروهبندی مناطق جغرافیایی، مثل locality و sublocality، که برای نشانیهای پستی در برخی کشورها استفاده میشود. |
room |
اتاق نشانی ساختمان. |
street_number |
شماره دقیق خیابان. |
bus_station، train_station و transit_station |
مکان ایستگاه اتوبوس، قطار، یا حملونقل عمومی. |
سوگیری ناحیه نمایش
در درخواست «زمینکدیابی»، میتوانید به سرویس «زمینکدیابی» دستور دهید که نتایج را در نمای هدف مشخصی (که بهصورت کادر مرزی بیان میشود) ترجیح دهد. این کار را
در نشانی وب درخواست با تنظیم پارامتر bounds انجام میدهید.
پارامتر bounds مختصات طول/عرض جغرافیایی گوشههای جنوب غربی و شمال شرقی این چارگوش مرزی را بااستفاده از نویسه خط عمودی (|) برای جدا کردن مختصات تعریف میکند.
برای مثال، زمینکدیاب برای «واشنگتن» معمولاً ایالت واشنگتن در ایالات متحده را برمیگرداند:
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?address=Washington&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Washington",
"short_name" : "WA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Washington, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 49.0024442,
"lng" : -116.91558
},
"southwest" : {
"lat" : 45.543541,
"lng" : -124.8489739
}
},
"location" : {
"lat" : 47.7510741,
"lng" : -120.7401385
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 49.0024442,
"lng" : -116.91558
},
"southwest" : {
"lat" : 45.543541,
"lng" : -124.8489739
}
}
},
"place_id" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
"types" : [ "administrative_area_level_1", "political" ]
}
],
"status" : "OK"
}
بااینحال، افزودن آرگومان bounds که جعبه مرزی را در اطراف بخش شمال شرقی ایالات متحده تعریف میکند، باعث میشود این زمینکدیاب شهر واشنگتن دی.سی. را برگرداند:
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?address=Washington&bounds=36.47,-84.72%7C43.39,-65.90&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Washington",
"short_name" : "Washington",
"types" : [ "locality", "political" ]
},
{
"long_name" : "District of Columbia",
"short_name" : "District of Columbia",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "District of Columbia",
"short_name" : "DC",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Washington, DC, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 38.9958641,
"lng" : -76.90939299999999
},
"southwest" : {
"lat" : 38.7916449,
"lng" : -77.119759
}
},
"location" : {
"lat" : 38.9071923,
"lng" : -77.03687069999999
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 38.9958641,
"lng" : -76.90939299999999
},
"southwest" : {
"lat" : 38.7916449,
"lng" : -77.119759
}
}
},
"place_id" : "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
سوگیری منطقه
در درخواست «زمینکدیابی»، میتوانید بااستفاده از پارامتر region به سرویس «زمینکدیابی» دستور دهید نتایج را براساس منطقهای خاص برگرداند. این پارامتر یک آرگومان ccTLD (دامنه سطح بالای کد کشور) را میگیرد که سوگیری منطقه را مشخص میکند. اکثر کدهای ccTLD با کدهای ISO 3166-1 یکسان هستند، با چند استثنای قابلتوجه. برای مثال، ccTLD پادشاهی متحد «uk» (.co.uk) است، درحالیکه کد ISO 3166-1 آن «gb» است (که ازنظر فنی برای نهاد «پادشاهی متحد بریتانیای کبیر و ایرلند شمالی» است).
نتایج زمینکدیابی میتواند برای هر دامنهای که برنامه اصلی Google Maps بهطور رسمی در آن راهاندازی شده است، سوگیری داشته باشد. توجه داشته باشید که سوگیری فقط نتایج مربوط به دامنه خاصی را ترجیح میدهد؛ اگر نتایج مرتبطتری خارج از این دامنه وجود داشته باشد، ممکن است آنها نیز گنجانده شوند.
برای مثال، زمینکدیابی برای «Toledo» این نتیجه را برمیگرداند، زیرا دامنه پیشفرض برای Geocoding API روی ایالات متحده تنظیم شده است. درخواست:
https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Toledo",
"short_name" : "Toledo",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Lucas County",
"short_name" : "Lucas County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Ohio",
"short_name" : "OH",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Toledo, OH, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 41.732844,
"lng" : -83.454229
},
"southwest" : {
"lat" : 41.580266,
"lng" : -83.69423700000002
}
},
"location" : {
"lat" : 41.6639383,
"lng" : -83.55521200000001
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 41.732844,
"lng" : -83.454229
},
"southwest" : {
"lat" : 41.580266,
"lng" : -83.69423700000002
}
}
},
"place_id" : "ChIJeU4e_C2HO4gRRcM6RZ_IPHw",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
درخواست «زمینکدیابی» برای «Toledo» با region=es (اسپانیا) شهر اسپانیایی را برمیگرداند.
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?address=Toledo®ion=es&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Toledo",
"short_name" : "Toledo",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Toledo",
"short_name" : "TO",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Castile-La Mancha",
"short_name" : "CM",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Spain",
"short_name" : "ES",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Toledo, Spain",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 39.88605099999999,
"lng" : -3.9192423
},
"southwest" : {
"lat" : 39.8383676,
"lng" : -4.0796176
}
},
"location" : {
"lat" : 39.8628316,
"lng" : -4.027323099999999
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 39.88605099999999,
"lng" : -3.9192423
},
"southwest" : {
"lat" : 39.8383676,
"lng" : -4.0796176
}
}
},
"place_id" : "ChIJ8f21C60Lag0R_q11auhbf8Y",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
فیلتر کردن مؤلفه
در پاسخ Geocoding، Geocoding API میتواند نتایج نشانی را محدود به منطقهای خاص برگرداند. میتوانید محدودیت را
بااستفاده از فیلتر components مشخص کنید. فیلتر شامل فهرستی از جفتهای component:value است که با خط عمودی (|) از هم جدا شدهاند. مقادیر فیلتر از همان روشهای اصلاح املایی و تطابق جزئی که سایر درخواستهای «زمینکدیابی» پشتیبانی میکنند پشتیبانی میکند. اگر
زمینکدیاب مطابقت جزئی برای فیلتر مؤلفه پیدا کند، پاسخ حاوی
فیلد partial_match خواهد بود.
components که میتواند فیلتر شود شامل موارد زیر است:
-
postal_codeباpostal_codeوpostal_code_prefixمطابقت دارد. countryبا نام کشور یا کد کشور دوحرفی ISO 3166-1 مطابقت دارد. این میانای برنامهسازی کاربردی از استاندارد ISO برای تعریف کشورها پیروی میکند و فیلتر کردن زمانی بهترین عملکرد را دارد که از کد ISO مربوط به کشور استفاده شود.
components زیر ممکن است برای تأثیرگذاری بر نتایج استفاده شود، اما اعمال نخواهد شد:
routeبا نام کوتاه یا بلند مسیر مطابقت دارد.localityباlocalityوsublocalityنوع مطابقت دارد.administrative_areaبا همه سطوحadministrative_areaمطابقت دارد.
نکاتی درباره فیلتر کردن مؤلفه:
- این فیلترهای مؤلفه را در درخواستها تکرار نکنید، درغیراینصورت میانای برنامهسازی کاربردی
Invalid_request:country،postal_code،routeرا برمیگرداند - اگر درخواست حاوی فیلترهای مؤلفه تکراری باشد، API آن فیلترها را بهعنوان AND ارزیابی میکند، نه OR.
- نتایج با Google Maps سازگار است که گاهی اوقات پاسخهای غیرمنتظره
ZERO_RESULTSارائه میدهد. استفاده از «تکمیل خودکار جا» ممکن است در برخی موارد استفاده نتایج بهتری ارائه دهد. برای کسب اطلاعات بیشتر، این پرسشگان را ببینید. - برای هر مؤلفه نشانی، آن را در پارامتر
addressیا در فیلترcomponentsمشخص کنید، اما نه در هر دو. مشخص کردن مقادیر یکسان در هر دو ممکن است منجر بهZERO_RESULTSشود.
زمینکدیاب برای «High St, Hastings» با components=country:GB نتیجهای
در هیستینگز، انگلستان برمیگرداند، نه در هیستینگز-آن-هادسون، ایالات متحده.
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?address=high+st+hasting&components=country:GB&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "High Street",
"short_name" : "High St",
"types" : [ "route" ]
},
{
"long_name" : "Hastings",
"short_name" : "Hastings",
"types" : [ "postal_town" ]
},
{
"long_name" : "East Sussex",
"short_name" : "East Sussex",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "England",
"short_name" : "England",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
},
{
"long_name" : "TN34 3EY",
"short_name" : "TN34 3EY",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "High St, Hastings TN34 3EY, UK",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 50.8601041,
"lng" : 0.5957329
},
"southwest" : {
"lat" : 50.8559061,
"lng" : 0.5906163
}
},
"location" : {
"lat" : 50.85830319999999,
"lng" : 0.5924594
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 50.8601041,
"lng" : 0.5957329
},
"southwest" : {
"lat" : 50.8559061,
"lng" : 0.5906163
}
}
},
"partial_match" : true,
"place_id" : "ChIJ-Ws929sa30cRKgsMNVkPyws",
"types" : [ "route" ]
}
],
"status" : "OK"
}
درخواست زمینکدیاب برای منطقه «سانتا کروز» با components=country:ES
«سانتا کروز د تنریفه» را در جزایر قناری، اسپانیا برمیگرداند.
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?components=locality:santa+cruz|country:ES&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Santa Cruz de Tenerife",
"short_name" : "Santa Cruz de Tenerife",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Cruz de Tenerife",
"short_name" : "TF",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Canary Islands",
"short_name" : "CN",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Spain",
"short_name" : "ES",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Santa Cruz de Tenerife, Spain",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 28.487616,
"lng" : -16.2356646
},
"southwest" : {
"lat" : 28.4280248,
"lng" : -16.3370045
}
},
"location" : {
"lat" : 28.4636296,
"lng" : -16.2518467
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 28.487616,
"lng" : -16.2356646
},
"southwest" : {
"lat" : 28.4280248,
"lng" : -16.3370045
}
}
},
"place_id" : "ChIJcUElzOzMQQwRLuV30nMUEUM",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
فیلتر کردن مؤلفه فقط درصورتی پاسخ ZERO_RESULTS را برمیگرداند که
فیلترهایی ارائه دهید که یکدیگر را مستثنی کنند.
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?components=administrative_area:TX|country:FR&key=YOUR_API_KEY
پاسخ:
{
"results" : [],
"status" : "ZERO_RESULTS"
}
میتوانید بااستفاده از فیلتر components، پُرسمانهای معتبری بدون پارامتر نشانی ایجاد کنید. (هنگام زمینکدیابی نشانی کامل، اگر درخواست حاوی نام و شماره ساختمانها باشد،
پارامتر address الزامی است.)
درخواست:
https://maps.googleapis.com/maps/api/geocode/json?components=route:Annankatu|administrative_area:Helsinki|country:Finland&key=YOUR_API_KEY
پاسخ:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Annankatu",
"short_name" : "Annankatu",
"types" : [ "route" ]
},
{
"long_name" : "Helsinki",
"short_name" : "HKI",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Finland",
"short_name" : "FI",
"types" : [ "country", "political" ]
},
{
"long_name" : "00101",
"short_name" : "00101",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Annankatu, 00101 Helsinki, Finland",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 60.168997,
"lng" : 24.9433353
},
"southwest" : {
"lat" : 60.16226160000001,
"lng" : 24.9332897
}
},
"location" : {
"lat" : 60.1657808,
"lng" : 24.938451
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 60.168997,
"lng" : 24.9433353
},
"southwest" : {
"lat" : 60.16226160000001,
"lng" : 24.9332897
}
}
},
"place_id" : "ChIJARW7C8sLkkYRgl4je4-RPUM",
"types" : [ "route" ]
}
],
"status" : "OK"
}