الأخطاء وتحديد المشاكل وحلّها

تعرض Isochrones API الأخطاء باستخدام تنسيق JSON العادي في Google Cloudgoogle.rpc.Status:

{
  "error": {
    "code": 400,
    "message": "Violation in GenerateIsochroneRequest.travel_duration: travel_duration must be at least 1 second and not exceed 3600 seconds (60 minutes) for DRIVE or TWO_WHEELER mode or 7200 seconds (120 minutes) for other modes",
    "status": "INVALID_ARGUMENT"
  }
}

استخدِم الحقل status (أو HTTP code) لمعالجة الأخطاء آليًا. إنّ نص message مخصّص للمطوّرين وقد يتغيّر، لذا لا تحلّله.

عند استخدام Isochrones API، قد تظهر لك رموز حالة الخطأ الشائعة التالية:

  • 400 INVALID_ARGUMENT: يحتوي الطلب على مَعلمات غير صالحة أو صيغة غير صحيحة:
    • حدود المدة: تأكَّد من أنّ قيمة travelDuration لا تقل عن "1s"، وتنتهي بـ "s" (مثل "1800s")، ولا تتجاوز الحد الأقصى للوضع: 3600s (60 دقيقة) لـ DRIVE وTWO_WHEELER، أو 7200s (120 دقيقة) لـ WALK وBICYCLE. يتم رفض القيمة صفر ("0s") والقيم السالبة والقيم التي تقل عن ثانية واحدة (مثل "0.5s").
    • إعدادات الزيارات المفضّلة: تأكَّد من عدم ضبط routingPreference على TRAFFIC_AWARE عندما تكون قيمة travelMode هي WALK أو BICYCLE. لا تتوفّر ميزة "الحالة المرورية المباشرة" إلا في DRIVE وTWO_WHEELER.
    • التعدادات المطلوبة: تأكَّد من تحديد كل من travelMode وtravelDirection (FROM أو TO) وعدم ضبطهما على *_UNSPECIFIED.
    • إحداثيات نقطة الانطلاق (location): اضبط كلاً من latitude (في [-90, 90]) وlongitude (في [-180, 180]). يتم التعامل مع الحقل الذي تم حذفه على أنّه 0 بدون حدوث خطأ: يؤدي حذف كليهما إلى الحصول على (0, 0)، وهو ما يتم رفضه، ويؤدي حذف latitude فقط إلى وضع نقطة الانطلاق على خط الاستواء، ويؤدي حذف longitude فقط إلى وضعها على خط الطول الرئيسي.
    • تنسيق رقم تعريف المكان (place): تأكَّد من أنّ place هو رقم تعريف مكان أو places/{place_id} اسم مورد (على سبيل المثال، "places/ChIJIQBpAG2ahYAR_6128GcTUEo")، بدون أي أجزاء مسار إضافية، ويشير إلى رقم تعريف مكان صالح.
    • قناع الحقل (X-Goog-FieldMask): في حال توفيره، يجب أن يشير العنوان إلى مسارات استجابة صالحة، مثل isochrone أو isochrone.geoJson أو *.
    • مفتاح واجهة برمجة التطبيقات غير صالح (API_KEY_INVALID): يشير ذلك إلى أنّ مفتاح واجهة برمجة التطبيقات في X-Goog-Api-Key أو ?key= غير صالح أو غير معروف، ما يؤدي إلى عرض 400 INVALID_ARGUMENT مع السبب API_KEY_INVALID.
  • 403 PERMISSION_DENIED: تعذّرت المصادقة أو التفويض:
    • لم يتم تقديم بيانات اعتماد المصادقة (X-Goog-Api-Key أو ?key= أو رمز Authorization: Bearer المميّز) في الطلب.
    • لم يتم تفعيل Isochrones API (isochrones.googleapis.com) في مشروعك على Google Cloud، أو لم يتم تفعيل الفوترة.
    • يحتوي مفتاح واجهة برمجة التطبيقات على قيود مفروضة على استهداف واجهة برمجة التطبيقات أو عنوان IP أو مُحيل HTTP، وهي تحظر الطلبات إلى isochrones.googleapis.com.
  • 404 NOT_FOUND: تعذّر حلّ نقطة الانطلاق أو محاذاتها مع شبكة الطرق:
    • تعذّر حلّ المشكلة في "place" لتحديد الموقع الجغرافي. تأكَّد من أنّ رقم تعريف المكان صالح وحديث.
    • يقع مركز نقطة الانطلاق location أو place بعيدًا عن جزء من الطريق المتوافق مع وضع النقل بمسافة تزيد عن الحد الأقصى لمسافة المحاذاة (حوالي 200 متر أو أقل لـ WALK وBICYCLE). يمكنك نقل الإحداثيات لتكون أقرب إلى طريق عام أو تمرير إحداثيات مدخل الطريق بدلاً من رقم تعريف مكان لمتنزّه كبير أو مَعلم.
    • الإحداثيات في منطقة لا تتوفّر فيها بيانات الطرق (مثل المحيط المفتوح).
  • ‫429 RESOURCE_EXHAUSTED: تجاوز مشروعك الحدّ الأقصى للحصة في الدقيقة (300 طلب في الدقيقة تلقائيًا):

    {
      "error": {
        "code": 429,
        "message": "Quota exceeded for quota metric 'Requests' and limit 'Requests per minute' of service 'isochrones.googleapis.com'.",
        "status": "RESOURCE_EXHAUSTED"
      }
    }
    

    يمكنك تقليل معدلات طلبات العميل وإعادة محاولة الردود 429 باستخدام خوارزمية الرقود الأسي الثنائي مع التشويش العشوائي.

  • ‫503 UNAVAILABLE: الخدمة غير متاحة مؤقتًا أو هناك ضغط كبير عليها. أعِد محاولة إرسال الطلب باستخدام خوارزمية الرقود الأسي الثنائي.

  • ‫500 INTERNAL: حدث خطأ في الخادم الداخلي، مثل انتهاء مهلة الخلفية. أعِد محاولة إرسال الطلب باستخدام خوارزمية الرقود الأسي الثنائي.