Background
بازگشت به بلاگ

مسیریابی، فاصله و زمان سفر

۱۴۰۵/۷/۷
تیم ژئوتاژک
مسیریابی، فاصله و زمان سفر

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

کاربردها

  • محاسبه هزینه ارسال بر اساس فاصله واقعی
  • تخمین زمان رسیدن پیک یا ناوگان
  • مقایسه دسترسی پیاده و سواره به یک مکان

دریافت توکن

  1. وارد داشبورد ژئوتاژک کلود شوید و با خرید بسته ژئوکوین کیف پول خود را شارژ کنید (با تایید شماره موبایل، ۲۰۰ هزار ژئوکوین هدیه می‌گیرید).
  2. در بخش توکن‌های API یک توکن بسازید، دسترسی «مسیریابی، فاصله و زمان سفر» را به آن بدهید و بخشی از موجودی کیف پول را به آن اختصاص دهید.
  3. کلید توکن را کپی کنید و در هدر Authorization بفرستید.

هزینه هر درخواست در صفحه سرویس‌ها درج شده و از اعتبار همان توکن کم می‌شود؛ خرید جداگانه برای هر سرویس لازم نیست.

آدرس سرویس

GET https://cloud.geotajak.ir/api/geo/route

توکن را در هدر Authorization بفرستید:

Authorization: Bearer YOUR_TOKEN

(هدر X-API-Key: YOUR_TOKEN یا پارامتر ?api_key=YOUR_TOKEN هم پذیرفته می‌شود.)

پارامترها

پارامترنوعاجباریپیش‌فرضتوضیح
from_latعددبله—عرض جغرافیایی مبدا
from_lonعددبله—طول جغرافیایی مبدا
to_latعددبله—عرض جغرافیایی مقصد
to_lonعددبله—طول جغرافیایی مقصد
profileمتنخیرautoauto خودرو، pedestrian پیاده، bicycle دوچرخه

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

cURL

curl "https://cloud.geotajak.ir/api/geo/route?from_lat=35.6892&from_lon=51.389&to_lat=32.6539&to_lon=51.666&profile=auto" \
  -H "Authorization: Bearer YOUR_TOKEN"

Python

import requests

TOKEN = "YOUR_TOKEN"
resp = requests.get(
    "https://cloud.geotajak.ir/api/geo/route",
    params={"from_lat": 35.6892, "from_lon": 51.389, "to_lat": 32.6539, "to_lon": 51.666, "profile": "auto"},
    headers={"Authorization": f"Bearer {TOKEN}"},
    timeout=60,
)
resp.raise_for_status()
print(resp.json())
print("اعتبار باقی‌مانده توکن:", resp.headers.get("X-Credit-Remaining"))

JavaScript

const TOKEN = "YOUR_TOKEN";
const res = await fetch(`https://cloud.geotajak.ir/api/geo/route?from_lat=${encodeURIComponent("35.6892")}&from_lon=${encodeURIComponent("51.389")}&to_lat=${encodeURIComponent("32.6539")}&to_lon=${encodeURIComponent("51.666")}&profile=${encodeURIComponent("auto")}`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const data = await res.json();
console.log(data, res.headers.get("X-Credit-Remaining"));

نمونه پاسخ

{
  "distance_km": 448.62,
  "duration_min": 241.3,
  "profile": "auto"
}
فیلدتوضیح
distance_kmفاصله جاده‌ای به کیلومتر
duration_minزمان تقریبی سفر به دقیقه
profileنوع جابه‌جایی استفاده‌شده

هزینه و هدرهای پاسخ

هزینه هر درخواست موفق از اعتبار توکن کم می‌شود. در هر پاسخ این هدرها برگردانده می‌شوند:

هدرتوضیح
X-Request-Costهزینه همین درخواست (ژئوکوین)
X-Credit-Remainingاعتبار باقی‌مانده توکن (ژئوکوین)

نمایش آماده در سایت (بدون کدنویسی)

اگر به آدرس همین سرویس ui=true اضافه کنید، به‌جای JSON یک صفحه آماده (نقشه، نمودار و جدول نتیجه) برمی‌گردد که در <iframe> سایت شما قرار می‌گیرد و با رنگ‌های توکن شما ساخته می‌شود. هزینه آن با درخواست معمولی یکی است. جزئیات در راهنمای شروع و نمونه زنده در «آزمایشگاه سرویس» صفحه هر سرویس.

خطاها

کدخطاتوضیحهزینه کسر می‌شود؟
401missing_token / invalid_tokenتوکن ارسال نشده یا نامعتبر استخیر
401token_disabledتوکن غیرفعال شده استخیر
402insufficient_creditاعتبار توکن تمام شده است؛ از کیف پول به آن اعتبار اضافه کنیدخیر
403service_not_allowedاین توکن به این سرویس دسترسی نداردخیر
403token_expiredتاریخ انقضای توکن گذشته استخیر
403ip_not_allowed / domain_not_allowedدرخواست از آی‌پی یا دامنه‌ای غیر از موارد مجاز توکن آمده استخیر
405method_not_allowedمتد HTTP اشتباه استخیر
429rate_limitedسقف درخواست ساعتی توکن پر شده استخیر
502upstream_unavailableسرویس موقتا در دسترس نیستخیر
5xx—خطای داخلی سرویسخیر
503—مسیری بین دو نقطه پیدا نشدبله

پاسخ خطا به این شکل است:

{"error": "insufficient_credit", "message": "اعتبار این توکن تمام شده است؛ از کیف پول خود به آن اعتبار اضافه کنید"}

نکته‌ها

  • برای مسافت‌های کوتاه شهری پیاده از profile=pedestrian استفاده کنید؛ مسیرهای پیاده‌رو را در نظر می‌گیرد.

سوالی دارید؟ از بخش تیکت‌ها در داشبورد با ما در ارتباط باشید.

APIمسیریابیRouting