اصطلاح زمینکدیابی معمولاً به ترجمه نشانی قابلخواندن برای انسان به مکانی روی نقشه اشاره دارد. فرایند انجام عکس این کار، یعنی ترجمه کردن مکان روی نقشه به نشانی قابلخواندن برای انسان، زمینکدیابی معکوس نامیده میشود.
درخواستهای زمینکدیابی معکوس
پارامترهای الزامی
latlng— مختصات طول و عرض جغرافیایی که مکانی را مشخص میکند که میخواهید نزدیکترین نشانی قابلخواندن برای انسان را برای آن دریافت کنید.key— کلید میانای برنامهسازی کاربردی برنامه شما. این کلید برنامه شما را برای اهداف مدیریت سهمیه شناسایی میکند. با نحوه دریافت کلید آشنا شوید.
پارامترهای اختیاری
اینها پارامترهای اختیاریای هستند که میتوانید در درخواست زمینکدیابی معکوس اضافه کنید:
language— زبانی که نتایج به آن برگردانده میشود.- فهرست زبانهای پشتیبانیشده را ببینید. Google اغلب زبانهای پشتیبانیشده را بهروز میکند، بنابراین این فهرست ممکن است کامل نباشد.
- اگر
languageارائه نشده باشد، زمینکدیاب تلاش میکند از زبان ترجیحی مشخصشده در سرصفحهAccept-Languageیا زبان بومی دامنهای که درخواست از آن ارسال شده است استفاده کند. - زمینکدیاب تمام تلاش خود را میکند تا نشانی خیابانی ارائه دهد که هم برای کاربر و هم برای افراد محلی قابلخواندن باشد. برای دستیابی به این هدف، نشانیهای خیابان را به زبان محلی برمیگرداند، درصورت لزوم به نویسهای که برای کاربر قابلخواندن باشد نویسهگردانی میکند، و زبان ترجیحی را رعایت میکند. همه نشانیهای دیگر به زبان ترجیحی برگردانده میشوند. همه مؤلفههای نشانی به همان زبان برگردانده میشوند، که از مؤلفه اول انتخاب شده است.
- اگر نامی به زبان ترجیحی دردسترس نباشد، زمینکدیاب از نزدیکترین مطابقت استفاده میکند.
region— کد منطقه، که بهعنوان مقدار دو نویسهای ccTLD («دامنه سطح بالا») مشخص شده است. این پارامتر همچنین میتواند براساس قانون ذیربط بر نتایج تأثیر بگذارد.result_type— فیلتری از یک یا چند نوع نشانی، که با خط عمودی (|) از هم جدا شدهاند. اگر پارامتر حاوی چندین نوع نشانی باشد، API همه نشانیهایی را که با هریک از انواع مطابقت داشته باشد برمیگرداند. نکتهای درباره پردازش: پارامترresult_typeجستجو را به نوع(های) نشانی مشخصشده محدود نمیکند. بلکهresult_typeبهعنوان فیلتر پساز جستجو عمل میکند: میانای برنامهسازی کاربردی همه نتایج را برایlatlngمشخصشده واکشی میکند، سپس نتایجی را که با نوع(انواع) نشانی مشخصشده مطابقت ندارند کنار میگذارد. مقادیر زیر پشتیبانی میشوند:انواع نشانی و انواع مؤلفه نشانی
آرایه
typesدر بدنهGeocodeResultدر پاسخ، نوع نشانی را نشان میدهد. نمونههایی از انواع نشانی شامل نشانی خیابان، کشور، یا نهاد سیاسی است. آرایهtypesدر فیلدAddressComponentsاز بدنهGeocodeResultنوع هر بخش از نشانی را نشان میدهد. برای مثال، شماره خیابان یا کشور.نشانیها ممکن است چند نوع داشته باشند. این نوعها ممکن است بهعنوان «برچسب» درنظر گرفته شوند. برای مثال، بسیاریاز شهرها با نوع
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 در فرانسه).
location_type— فیلتری از یک یا چند نوع مکان، که با خط عمودی (|) از هم جدا شدهاند. اگر پارامتر حاوی چند نوع مکان باشد، API همه نشانیهایی را که با هریک از انواع مطابقت داشته باشد برمیگرداند. نکتهای درباره پردازش: پارامترlocation_typeجستجو را به انواع مکان مشخصشده محدود نمیکند. بلکهlocation_typeبهعنوان فیلتر پساز جستجو عمل میکند: میانای برنامهسازی کاربردی همه نتایج را برایlatlngمشخصشده واکشی میکند، سپس نتایجی را که با انواع مکان مشخصشده مطابقت ندارند کنار میگذارد. از مقادیر زیر پشتیبانی میشود:"ROOFTOP"فقط نشانیهایی را برمیگرداند که Google اطلاعات مکان آنها را با دقت نشانی خیابان داشته باشد."RANGE_INTERPOLATED"فقط نشانیهایی را برمیگرداند که تقریبی را (معمولاً در جاده) نشان میدهند که بین دو نقطه دقیق (مانند تقاطعها) درونیابی شده است. محدوده درونیابیشده معمولاً نشان میدهد که زمینکدیابهای پشتبام برای نشانی خیابان دردسترس نیست."GEOMETRIC_CENTER"فقط مراکز هندسی مکانی مانند چندخطی (مثلاً خیابان) یا چندضلعی (منطقه) را برمیگرداند."APPROXIMATE"فقط نشانیهایی را برمیگرداند که بهعنوان تقریبی مشخص شدهاند.
extra_computations— از این پارامتر برای مشخص کردن ویژگیهای اضافی زیر در پاسخ استفاده کنید:ADDRESS_DESCRIPTORS— برای جزئیات بیشتر، توصیفکنندههای نشانی را ببینید.BUILDING_AND_ENTRANCES— برای جزئیات بیشتر، ورودیها و طرح کلی ساختمان را ببینید.
extra_computationsرا در درخواست برای هر ویژگی اضافه کنید، برای مثال:extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES
اگر هر دو فیلتر result_type و location_type وجود داشته باشند، API فقط نتایجی را برمیگرداند که با هر دو مقدار result_type و location_type مطابقت داشته باشند. اگر هیچکدام از مقادیر فیلتر قابلقبول نباشد،
API مقدار ZERO_RESULTS را برمیگرداند.
نمونهای از زمینکدیابی معکوس
عبارت جستجوی زیر حاوی مقدار طول/عرض جغرافیایی برای مکانی در بروکلین است:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
پُرسمان بالا نتیجه زیر را برمیگرداند:
{
"results" : [
{
"address_components" : [
{
"long_name" : "277",
"short_name" : "277",
"types" : [ "street_number" ]
},
{
"long_name" : "Bedford Avenue",
"short_name" : "Bedford Ave",
"types" : [ "route" ]
},
{
"long_name" : "Williamsburg",
"short_name" : "Williamsburg",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Brooklyn",
"short_name" : "Brooklyn",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Kings",
"short_name" : "Kings",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "11211",
"short_name" : "11211",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
"geometry" : {
"location" : {
"lat" : 40.714232,
"lng" : -73.9612889
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 40.7155809802915,
"lng" : -73.9599399197085
},
"southwest" : {
"lat" : 40.7128830197085,
"lng" : -73.96263788029151
}
}
},
"place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"types" : [ "street_address" ]
},
... Additional <code>results[]</code> ...
توجه داشته باشید که زمینکدیاب معکوس بیشاز یک نتیجه برگردانده است. نتایج
"formatted_address" فقط نشانیهای پستی نیستند، بلکه
هر روشی برای نامگذاری جغرافیایی مکان هستند. برای مثال، هنگام زمینکدیابی نقطهای در شهر شیکاگو، نقطه زمینکدیابیشده ممکن است بهعنوان نشانی خیابان، بهعنوان شهر (شیکاگو)، بهعنوان ایالت آن (ایلینوی)، یا بهعنوان کشور (ایالات متحده) نشان داده شود. همه اینها برای زمینکدیاب «نشانی» محسوب میشوند. زمینکدیاب معکوس هرکدام از این انواع را بهعنوان نتایج معتبر برمیگرداند.
زمینکدیاب معکوس با نهادهای سیاسی (کشورها، استانها، شهرها، و محلهها)، نشانیهای خیابان، و کدهای پستی مطابقت دارد.
فهرست کامل مقادیر formatted_address که توسط پُرسمان قبلی برگردانده شده است در زیر نشان داده شده است.
{
"plus_code" : {
"compound_code" : "P27Q+MCM New York, NY, USA",
"global_code" : "87G8P27Q+MCM"
},
"results" : [
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "street_address" ]
},
{
"formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "premise" ]
},
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "establishment", "point_of_interest" ]
},
{
"formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "route" ]
},
{
"formatted_address" : "P27Q+MC New York, NY, USA",
...
"types" : [ "plus_code" ]
},
{
"formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Brooklyn, NY 11211, USA",
...
"types" : [ "postal_code" ]
},
{
"formatted_address" : "Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Kings County, Brooklyn, NY, USA",
...
"types" : [ "administrative_area_level_2", "political" ]
},
{
"formatted_address" : "Brooklyn, NY, USA",
...
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"formatted_address" : "New York, NY, USA",
...
"types" : [ "locality", "political" ]
},
{
"formatted_address" : "New York, USA",
...
"types" : [ "administrative_area_level_1", "political" ]
},
{
"formatted_address" : "United States",
...
"types" : [ "country", "political" ]
}
],
"status" : "OK"
}
این میانای برنامهسازی کاربردی انواع مختلفی از نشانیها را برمیگرداند، از نشانی خیابان که دقیقترین است تا نهادهای سیاسی با دقت کمتر مثل محلهها، شهرها، شهرستانها، و ایالتها. نشانی دقیقتر معمولاً برجستهترین نتیجه است، همانطور که در این مورد نیز چنین است. اگر میخواهید نوع خاصی از نشانی را مطابقت دهید، بخش زیر را درباره محدود کردن نتایج براساس نوع ببینید. به همین دلیل، مکان نتایج نسبت به یکدیگر میتواند متفاوت باشد.
زمینکدیابی معکوس فیلترشده براساس نوع
مثال زیر نشانیهای برگرداندهشده را فیلتر میکند تا فقط نشانیهایی را دربرگیرد که
نوع مکان آنها ROOFTOP و نوع نشانی آنها
street_address است.
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY
توجه: این فیلترها فقط برای زمینکدیابی معکوس معتبر هستند.
پاسخهای زمینکدیابی معکوس
قالب پاسخ زمینکدیابی معکوس همانند پاسخ «زمینکدیابی» است. پاسخهای زمینکدیابی را ببینید. در زیر، کدهای وضعیت ممکن در پاسخ زمینکدیابی معکوس آورده شده است.
کدهای وضعیت زمینکدیابی معکوس
فیلد "status" در شیء پاسخ «زمینکدیابی» حاوی
وضعیت درخواست است و ممکن است حاوی اطلاعات اشکالزدایی باشد تا به شما کمک کند
دلیل کار نکردن زمینکدیابی معکوس را ردیابی کنید. فیلد "status"
ممکن است حاوی مقادیر زیر باشد:
"OK"نشان میدهد که خطایی رخ نداده است و حداقل یک نشانی برگردانده شده است."ZERO_RESULTS"نشان میدهد که زمینکدیابی معکوس موفقیتآمیز بوده است اما نتیجهای برنگردانده است. این اتفاق ممکن است زمانی رخ دهد کهlatlngدر مکانی دورافتاده به زمینکدیاب ارسال شده باشد."OVER_QUERY_LIMIT"نشان میدهد که از سهمیهتان فراتر رفتهاید."REQUEST_DENIED"نشان میدهد که درخواست رد شده است. احتمالاً به این دلیل که درخواست شامل پارامترresult_typeیاlocation_typeاست اما شامل کلید میانای برنامهسازی کاربردی نیست."INVALID_REQUEST"معمولاً یکی از موارد زیر را نشان میدهد:- پُرسمان (
address،components، یاlatlng) وجود ندارد. result_typeیاlocation_typeنامعتبر ارائه شده است.
- پُرسمان (
"UNKNOWN_ERROR"نشان میدهد که درخواست بهدلیل خطای سرور پردازش نشده است. اگر دوباره امتحان کنید، ممکن است درخواست موفقیتآمیز باشد.
کدهای باز زمینکدیابی معکوس
فیلد plus_code در پاسخ «زمینکدیابی» حاوی کد پلاس است که
بهترین تقریب را برای طول و عرض جغرافیایی موردپرسش ارائه میدهد.
علاوهبراین، آرایه نتایج JSON در اکثر موارد حاوی نتیجه کامل «زمینکدیابی» با نوع plus_code و نشانی حاوی Plus Code است. تضمین میشود که فاصله بین plus code رمزگشاییشده و نقطه درخواست کمتر از ۱۰ متر باشد.