عیب یابی

خطاها

در صورت بروز خطا، یک بدنه پاسخ خطا با فرمت استاندارد بازگردانده می‌شود و کد وضعیت HTTP روی وضعیت خطا تنظیم می‌شود.

پاسخ شامل یک شیء با یک شیء error با کلیدهای زیر است:

  • code : این همان وضعیت HTTP پاسخ است.
  • message : شرح مختصری از خطا.
  • status : کد وضعیتی که نوع خطا را نشان می‌دهد.

برای مثال، ارسال یک پارامتر placeId نامعتبر، خطای زیر را برمی‌گرداند:

{
  "error": {
    "code": 400,
    "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"",
    "status": "INVALID_ARGUMENT"
  }
}

خطاهای احتمالی عبارتند از:

کد وضعیت پیام عیب‌یابی
۴۰۰ INVALID_ARGUMENT کلیدی که ارائه دادید نامعتبر است. کلید API شما معتبر نیست یا در درخواست گنجانده نشده است. لطفاً مطمئن شوید که کل کلید را وارد کرده‌اید و API را برای این کلید فعال کرده‌اید.
۴۰۰ INVALID_ARGUMENT پارامتر «مسیر» شامل مقدار نامعتبری است: ☃» درخواست شما شامل آرگومان‌های نامعتبر بود. محتمل‌ترین دلایل این خطا عبارتند از:
  • مشکل از پارامتر path شماست.
    لطفاً مطمئن شوید که حداقل ۱ و کمتر از ۱۰۰ امتیاز دارید. هر امتیاز باید یک جفت عدد باشد که با کاما از هم جدا شده‌اند، مانند: 48.409114,-123.369158 . امتیازها باید با یک خط عمودی از هم جدا شوند: '|'.
  • درخواست شما شامل یک placeId نامعتبر بود.
  • درخواست شما شامل placeId ها و یک path بود. فقط یکی از این پارامترها را می‌توان برای هر درخواست مشخص کرد.

اگر برای جاده‌ای که دیگر وجود ندارد یا برای مکانی که جاده نیست، placeId ارسال شود، این خطا بازگردانده نخواهد شد.

۴۰۳ PERMISSION_DENIED درخواست ثبت نشده مسدود شد. لطفاً با استفاده از کنسول توسعه‌دهندگان گوگل ثبت‌نام کنید. درخواست به یک یا چند دلیل زیر رد شده است:
  • کلید API موجود نیست یا نامعتبر است.
  • پرداخت در حساب شما فعال نشده است.
  • از سقف مصرف تعیین‌شده توسط خود کاربر، عبور شده است.
  • روش پرداخت ارائه شده دیگر معتبر نیست (برای مثال، اعتبار کارت اعتباری منقضی شده است).

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

۴۰۴ NOT_FOUND برای این سرویس، HTTPS الزامی است. مطمئن شوید که درخواست‌ها را به https ://roads.googleapis.com/ ارسال می‌کنید و نه http ://roads.googleapis.com/ .
۴۲۹ RESOURCE_EXHAUSTED به دلیل رسیدن به سقف درخواست پروژه، درخواست متوقف شد. شما از محدودیت درخواستی که در کنسول پلتفرم گوگل کلود پیکربندی کرده‌اید، فراتر رفته‌اید. این محدودیت معمولاً به صورت درخواست در روز، درخواست در هر ۱۰۰ ثانیه و درخواست در هر ۱۰۰ ثانیه برای هر کاربر تنظیم می‌شود. این محدودیت باید طوری پیکربندی شود که از تمام شدن سهمیه روزانه شما توسط یک یا چند گروه کوچک از کاربران جلوگیری شود، در حالی که همچنان دسترسی معقولی به همه کاربران داده شود. برای پیکربندی این محدودیت‌ها، به بخش «محدود کردن استفاده از API» مراجعه کنید.

عقب‌نشینی نمایی

وقتی درخواست‌ها با شکست مواجه می‌شوند، باید مطمئن شوید که با سرعت بازگشت نمایی (exponential backoff) درخواست‌ها را دوباره امتحان می‌کنید. برای مثال، اگر یک درخواست یک بار با شکست مواجه شد، پس از یک ثانیه دوباره امتحان کنید، اگر دوباره با شکست مواجه شد، پس از دو ثانیه، سپس چهار ثانیه و به همین ترتیب ادامه دهید. این تضمین می‌کند که درخواست‌های ناقص یا شکست‌های گسترده، سرورهای گوگل را پر نکنند، زیرا بسیاری از کلاینت‌ها سعی می‌کنند درخواست‌ها را خیلی سریع دوباره امتحان کنند.

سوالات متداول عیب‌یابی

مسائل مربوط به پیاده‌سازی

با چه فرکانسی باید موقعیت مکانی وسیله نقلیه خود را نمونه‌برداری کنم؟
برای نتایج سریع و با کیفیت بالا، هر ۱ تا ۱۰ ثانیه توصیه می‌شود.
آیا محدودیتی در تعداد امتیازهایی که می‌توانم برای هر درخواست ارسال کنم وجود دارد؟
بله، یک پرس‌وجو می‌تواند حداکثر ۱۰۰ امتیاز داشته باشد.
برای ذخیره جفت‌های طول و عرض جغرافیایی فشرده‌شده‌ام، از چه سطح دقتی باید استفاده کنم؟
برای اطمینان از اینکه مسیرهای فشرده‌شده در تمام سطوح بزرگنمایی، حتی در حداکثر سطح بزرگنمایی، جاده‌ها را دنبال می‌کنند، باید جفت‌های عرض/طول جغرافیایی فشرده‌شده خود را با دقت ۷ رقم اعشار ذخیره کنید.
آیا می‌توانم از خطوط چندخطی کدگذاری‌شده برای نمایش مسیرهای فشرده‌شده استفاده کنم؟
خطوط چندخطی کدگذاری‌شده فقط با دقت ۵ رقم اعشار مشخص می‌شوند که منجر به خطایی تقریباً ۲ متر می‌شود. بنابراین اگر می‌خواهید مسیرهای اسنپ‌شده شما در سطوح بزرگنمایی بالا، جاده را دنبال کنند، خطوط چندخطی کدگذاری‌شده مناسب نیستند.

مسائل رایج

بعضی از نقاط برش داده نمی‌شوند، یا در مسیرهای برش داده شده فاصله وجود دارد. چگونه می‌توانم این مشکل را برطرف کنم؟
  • اگر از نقاط خود در فواصل زمانی مشخص نمونه‌برداری می‌کنید، مطمئن شوید که نقاط شما در فواصل زمانی کوتاه‌تر (هر ۱ تا ۱۰ ثانیه) نمونه‌برداری می‌شوند. اگر از فاصله زمانی طولانی‌تری استفاده شود (مثلاً ۶۰ ثانیه)، الگوریتم snap-to-road ممکن است نتواند جاده‌های طی شده را با دقت کافی تعیین کند.
  • اگر برای ایجاد نقاط به صورت دستی روی نقشه کلیک می‌کنید، ایجاد مسیرهایی با نقاط کم یا نقاط پراکنده که الگوریتم snapping به خوبی از پس آنها بر نمی‌آید، بسیار آسان است. الگوریتم snapping برای نقاطی که به هم نزدیک هستند، بهترین عملکرد را دارد. نسخه آزمایشی Snap to Roads را امتحان کنید یا از Roads inspector برای آزمایش مسیرهای خود استفاده کنید.
    چرا مسیرهای ثبت‌شده‌ی من هنگام بزرگنمایی، ناهموار یا کمی از جاده منحرف می‌شوند؟
    • آیا قبل از نمایش جفت‌های عرض/طول جغرافیایی جدا شده، دقت آنها را کاهش می‌دهید؟ ذخیره جفت‌های عرض/طول جغرافیایی جدا شده با دقت کمتر از ۷ رقم اعشار باعث ایجاد خطاهای دقت هنگام نمایش مسیر جدا شده روی نقشه می‌شود.
    • آیا از خطوط چندخطی کدگذاری‌شده استفاده می‌کنید؟ خطوط چندخطی کدگذاری‌شده، جفت‌های طول و عرض جغرافیایی را تا ۵ رقم اعشار کوتاه می‌کنند که باعث ایجاد خطایی در حد چند متر می‌شود و در نتیجه خطوط در بزرگنمایی بالا، ناهموار یا کمی از جاده منحرف می‌شوند.

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

    چه چیزی می‌تواند باعث شود که محدودیت سرعت برای جاده X به اشتباه نمایش داده شود؟
    محدودیت‌های سرعت از منابع مختلفی با دقت و پوشش متفاوت گرفته می‌شوند. اگر متوجه شدید که الگویی، مثلاً محدودیت‌های سرعت برای یک نوع جاده خاص یا در یک منطقه خاص، دائماً اشتباه است، لطفاً مراحل زیر را برای اطلاع ما انجام دهید:
    1. نقشه‌های گوگل را روی رایانه رومیزی یا برنامه نقشه‌های گوگل برای اندروید باز کنید.
    2. منوی سمت چپ را باز کنید.
    3. ارسال بازخورد را انتخاب کنید. توجه: ممکن است از شما خواسته شود وارد سیستم شوید.
    4. ویرایش نقشه را انتخاب کنید.
    5. بخش جاده‌ای را که می‌خواهید ویرایش کنید، انتخاب کنید.
    6. بعدی را انتخاب کنید.
    7. در فیلد «سایر»، مشخص کنید که محدودیت سرعت برای آن جاده اشتباه است.
    8. ارسال را انتخاب کنید.
    شما همچنین می‌توانید مشکلات دیگر را در اینجا گزارش دهید (برای مثال اگر جاده نام نادرستی دارد، به اشتباه ترسیم شده است، یا بسته است، یا خصوصی است).
    چرا مسیر ترسیم‌شده‌ی من به جای دنبال کردن جاده، از گوشه‌ها می‌گذرد؟
    برای اصلاح این مشکل، موارد زیر را بررسی کنید:
    • مطمئن شوید که پارامتر interpolate روی true تنظیم شده است.
    • بررسی کنید که نقاط داده اصلی شما در فواصل زمانی به اندازه کافی نزدیک (هر ۱ تا ۱۰ ثانیه) نمونه‌برداری شوند.
    چرا در مسیر تصادفی، بخش‌های زیادی از جاده که محدودیت سرعت در آنها تغییر نکرده است، بازگردانده می‌شوند؟
    وقتی پارامتر interpolate روی true تنظیم شود، کوئری snap-to-road یک چندخطی را برمی‌گرداند که جاده را در اطراف گوشه‌ها، پیچ‌ها و میدان‌ها دنبال می‌کند. اگر جاده پیچ داشته باشد، چندین بخش از جاده حتی اگر محدودیت سرعت تغییر نکند، بازگردانده می‌شوند تا یک چندخطی ایجاد شود که هندسه جاده را به دقت دنبال کند.