در حال بارگذاری

پرش به مطلب اصلی

سرویس جستجوی مکان‌های نزدیک (Nearby Search)

با این سرویس، نزدیک‌ترین مکان‌های یک دسته‌بندی مشخص (مثلاً بوستان، بیمارستان، ایستگاه مترو یا داروخانه) را در شعاع دلخواه از یک موقعیت جغرافیایی پیدا می‌کنید و برای هر مکان، نام، مختصات، مسافت و زمان رسیدن را دریافت می‌کنید.

کاربرد آن جایی است که کاربر می‌پرسد «نزدیک‌ترین … کجاست؟»: نمایش امکانات اطراف یک ملک، پیدا کردن نزدیک‌ترین شعبه یا مرکز خدماتی، و هر سناریویی که در آن باید فهرستی از مکان‌های یک دسته را بر اساس نزدیکی به کاربر نشان دهید.

نکته

برای فعال سازی این سرویس لطفا از طریق ارسال تیکت در پنل کاربری با پشتیبانی تماس بگیرید.

اطلاع
  1. ۱

    اولین قدم ثبت‌نام و دریافت API KEY برای اپلیکیشنی است که قصد دارید در آن از Map Api نشان استفاده کنید. کافیست در لینک فوق فرم مربوطه را تکمیل کنید تا بلافاصله API KEY را دریافت نمایید.

  2. ۲

    Api Key دریافتی از پنل توسعه‌دهندگان نشان را به صورتی که در ادامه مشاهده می‌کنید از طریق کلید Api-Key در header درخواست سرویس بگنجانید.

  3. ۳

    درخواست خود را با توجه به پارامترهایی که مربوط به سرویس موردنظرتان است با متد GET فراخوانی کنید.

  4. ۴

    چنانچه درخواست شما با موفقیت پردازش و پاسخ داده شود، خروجی با فرمت JSON دریافت خواهید کرد و چنانچه به هر دلیل خطایی رخ دهد، کد خطا بصورت HTTP Status Code و نوع آن با فرمت JSON ارسال می‌گردد. کدهای خطای احتمالی نیز در ادامه به صورت کامل توضیح داده شده‌اند.

شیوه‌ فراخوانی

آدرس Endpoint

برای استفاده از این سرویس، یک درخواست GET به اندپوینت زیر ارسال کنید:

https://api.neshan.org/v1/nearby

هدرهای درخواست (Headers)

Api-Key: <YOUR_API_KEY>

پارامترهای ورودی

پارامترها در رشته‌ کوئری (Query String) ارسال می‌شوند:

پارامترنوع دادهتوضیحاتنوع پارامتر
locationStringموقعیت مبدا با فرمت latitude,longitude (مثلاً 32.657307,51.677579).اجباری
layerStringنام لایه یا دسته‌بندی مکانی که جستجو در آن انجام می‌شود؛ فهرست کامل در پایین همین صفحه آمده است.اجباری
searchRadiusIntegerشعاع جستجو بر حسب متر.اجباری
یادداشت

کاراکتر کاما در مقدار location جداکننده‌ عرض و طول جغرافیایی است. اگر کتابخانه‌ شما مقدار پارامترها را encode می‌کند، این کاما به %2C تبدیل می‌شود که کاملاً درست است و سرویس هر دو شکل را می‌پذیرد.

نمونه درخواست

curl --location 'https://api.neshan.org/v1/nearby?location=32.657307,51.677579&layer=park&searchRadius=1200' \
--header 'Api-Key: <YOUR_API_KEY>'

فرمت پاسخ

در صورت موفقیت و وجود حداقل یک نتیجه در شعاع مشخص‌شده، پاسخ به شکل زیر بازگردانده می‌شود:

{
"layerPoints": {
"layer": {
"farsiTitle": "بوستان",
"icon": "https://static.neshanmap.ir/poi/64/park.png",
"slug": "park"
},
"nearestPoints": [
{
"distance": 2828,
"duration": 471,
"location": {
"latitude": 32.65758359999999,
"longitude": 51.675046300000005
},
"name": "پارک استانداری",
"poiHash": "Twv1A2RG1HVVYxRqAQfHeKgMLEtfGNuHURi8GBdD6iVqdcX-EE0KnTO0MobBxezpgeLBNt9QZS532FawuD1FbA"
},
{
"distance": 2937,
"duration": 486,
"location": {
"latitude": 32.6579886,
"longitude": 51.6753564
},
"name": "بوستان مشاهیر صفوی",
"poiHash": "8D4tOlj4fldYt_1QQ_fKuVNbJFcTu2HIbjRc_bgVA4FqdcX-EE0KnTO0MobBxezpGPnZnujTdC_IgeTPlWjU1g"
},
{
"distance": 3085,
"duration": 514,
"location": {
"latitude": 32.65512069999999,
"longitude": 51.67072830000001
},
"name": "پارک شهید رجایی",
"poiHash": "8z-NNbsPp0GcWwtezwnNbcyFTFpqUmqGC0EwekKqjohqdcX-EE0KnTO0MobBxezpAL6buG9vnS4-uTyO2vNegw"
},
{
"distance": 3281,
"duration": 535,
"location": {
"latitude": 32.654284,
"longitude": 51.6702465
},
"name": "بوستان هشت بهشت",
"poiHash": "6F1lYKQUHBCwxnP7LV3kCinYE86WJFmP-TjVM8ewPJNqdcX-EE0KnTO0MobBxezpK1ckr-sYUUuIGpDp5DtlCg"
}
]
}
}

اجزای پاسخ

پارامترنوع دادهتوضیحات
layerPointsObjectآبجکت نتیجه، شامل اطلاعات لایه و فهرست نزدیک‌ترین نقاط.

آبجکت layer

پارامترنوع دادهتوضیحات
slugStringنام انگلیسی لایه (همان مقداری که در پارامتر layer فرستادید).
farsiTitleStringعنوان فارسی لایه.
iconStringآدرس آیکون لایه.

آبجکت nearestPoints (درون آرایه)

پارامترنوع دادهتوضیحات
nameStringنام مکان.
locationObjectمختصات مکان با فیلدهای latitude و longitude.
distanceIntegerمسافت تا مبدا بر حسب متر.
durationIntegerزمان تخمینی رسیدن به مکان بر حسب ثانیه.
poiHashStringهش منحصربه‌فرد مکان. این مقدار ورودی سرویس دریافت اطلاعات مکان‌های شاخص است.
یادداشت

نتایج به‌ترتیب نزدیکی مرتب شده‌اند. مقدار distance مسافت پیمایش تا مکان است، نه فاصله‌ مستقیم؛ به همین دلیل می‌تواند از عددی که در searchRadius فرستاده‌اید بزرگ‌تر باشد (در نمونه‌ بالا شعاع ۱۲۰۰ متر است ولی مسافت‌ها بین ۲۸۰۰ تا ۳۳۰۰ متر هستند، در حالی که فاصله‌ مستقیم همه‌ این نقاط کمتر از ۱۲۰۰ متر است). پس برای فیلتر کردن بر اساس فاصله‌ هوایی به distance تکیه نکنید.

نکته

با استفاده از مقدار poiHash هر نتیجه می‌توانید جزئیات کامل آن مکان (شماره تماس، وبسایت، ساعات کاری، دسته‌بندی و …) را از سرویس دریافت اطلاعات مکان‌های شاخص بگیرید.

فهرست لایه‌های موجود

مقدار پارامتر layer باید یکی از مقادیر ستون اول باشد:

نام لایهعنوان فارسی
airlineشرکت هواپیمایی
airportفرودگاه
bankبانک
cafeکافی‌شاپ
cafe_restaurantکافه رستوران
campgroundاردوگاه
car_dealer_officialنمایندگی خودرو
car_inspectionمعاینه فنی
charityموسسه خیریه
cinemaسالن و پردیس سینمایی
city_hallمرکز همایش و سالن اجتماعات
clinicدرمانگاه
collegeدانشکده
commercial_complexمجتمع تجاری اداری
companyشرکت خصوصی
courthouseدادگاه
embassyسفارت
entertainmentتفریح و سرگرمی
financeموسسه مالی و اعتباری
foreign_consulateکنسولگری
formal_schoolمدرسه
gardenباغ
gymمجموعه ورزشی
health_complexمجتمع پزشکی
helal_ahmarهلال احمر
historicalمکان تاریخی
hospitalبیمارستان
hotelهتل
industrial_zoneمنطقه و شهرک صنعتی
interestsمکان دیدنی
international_expoنمایشگاه بین المللی
juice_shopآبمیوه و بستنی
libraryکتابخانه
local_government_officeاداره و سازمان دولتی
lodgingمهمانپذیر و پانسیون
lodging_touristاقامتگاه بومگردی
marriage_registration_officeدفتر رسمی ازدواج و طلاق
mosqueمسجد
movie_theaterسالن نمایش و آمفی تئاتر
natural_featureجاذبه طبیعی
notary_publicدفتر اسناد رسمی
parkبوستان
bus_stationایستگاه اتوبوس
metro_entranceایستگاه مترو
parkingپارکینگ
poolاستخر شنا
post_officeاداره پست
post_serviceخدمات پست و حمل بار هوایی
restaurantرستوران
schoolموسسه آموزشی
shopping_mallبازار و مرکز خرید
stadiumاستادیوم ورزشی
studying_centerمرکز مطالعه
temporary_accommodationاردوگاه اسکان اضطراری
theaterسالن تئاتر
traffic_policeپلیس راهنمایی و رانندگی
train_stationایستگاه قطار
transit_stationپایانه مسافربری و ایستگاه سوار
universityدانشگاه و موسسه آموزش عالی
vegetable_marketبازار روز و میوه تره‌بار
water_parkپارک آبی
wedding_venueتالار پذیرایی

کد خطاهای سرویس

HTTP CodeStatusDescription
400INVALID_ARGUMENTخطا در پارامتر های ورودی
470CoordinateParseErrorچنانچه مختصات جغرافیایی ارسالی معتبر نباشد رخ خواهد داد.
480KeyNotFoundدر صورتی که در فراخوانی وب‌سرویس از یک Api Key نامعتبر استفاده کنید یا Api Key خود را در header ارسال نکنید رخ خواهد داد.
481LimitExceededدر صورتی که تعداد فراخوانی وب‌سرویس‌ها از میزان مجازی که برای شما تعیین شده‌است عبور کند رخ خواهد داد.
482RateExceededچنانچه تعداد درخواست وب‌سرویس در دقیقه از حد مجاز عبور کند رخ خواهد داد.
483ApiKeyTypeErrorکلید دسترسی استفاده شده با سرویس فراخوانی شده همخوانی ندارد. بایستی از کلید دسترسی مرتبط با سرویس مورد نظر استفاده کنید.
484ApiWhiteListErrorبا توجه به اسکوپ تعریف‌شده برای این کلید، شما مجاز به استفاده نیستید.
485ApiServiceListErrorسرویس فراخوانی شده با سرویس‌های تعریف‌شده برای این کلید دسترسی همخوانی ندارد.
500GenericErrorوقوع خطای ناشناخته
404NOT_FOUNDمسیری با این مشخصات یافت نشده است.