التعامل مع الردّ من Isochrones API وعرضه بشكل مرئي

تعرض Isochrones API الشكل الهندسي بتنسيق GeoJSON العادي المتوافق مع RFC 7946. يحتوي الردّ دائمًا على عنصر هندسي MultiPolygon ضمن isochrone.geoJson (isochrone.geo_json في gRPC):

  • ترتيب الإحداثيات: كل موضع هو زوج [longitude, latitude] بالدرجات العشرية وفقًا للنظام الجيوديسي العالمي 1984.
  • مضلّعات متعددة (coordinates[i]): يمكن أن تتكوّن مناطق خطوط التساوي الزمنية التي يمكن الوصول إليها من مضلّعات متعددة منفصلة (على سبيل المثال، عندما يتصل جسر أو نفق عالي السرعة بمنطقة منفصلة يمكن الوصول إليها، أو عندما يتم تقسيم مضلّع يعبر خط الزوال المقابل ±180° على طول خط الزوال وفقًا لمعيار RFC 7946 الفقرة 3.1.9).
  • الأغلفة الخارجية والثقوب الداخلية (coordinates[i][j]): ضمن كل مضلّع coordinates[i]، تكون الحلقة الخطية الأولى (coordinates[i][0]) هي الغلاف الخارجي الذي يلتف عكس اتجاه عقارب الساعة، وأي حلقات خطية لاحقة (coordinates[i][1..k]) تمثّل ثقوبًا داخلية (مثل البحيرات أو المتنزهات أو الجيوب غير المحدّدة على الخريطة) تلتف في اتجاه عقارب الساعة وفقًا لقاعدة اليد اليمنى في RFC 7946 §3.1.6. كل حلقة مغلقة (موضعَي [longitude, latitude] الأول والأخير متطابقان).

يعرض المثال التالي استجابة MultiPolygon تحتوي على مضلّع رئيسي مع فتحة داخلية ومضلّع ثانٍ منفصل:

{
  "isochrone": {
    "geoJson": {
      "type": "MultiPolygon",
      "coordinates": [
        [
          [
            [-122.340000, 47.600000],
            [-122.320000, 47.600000],
            [-122.320000, 47.615000],
            [-122.340000, 47.615000],
            [-122.340000, 47.600000]
          ],
          [
            [-122.334000, 47.604000],
            [-122.334000, 47.609000],
            [-122.328000, 47.609000],
            [-122.328000, 47.604000],
            [-122.334000, 47.604000]
          ]
        ],
        [
          [
            [-122.355000, 47.602000],
            [-122.348000, 47.602000],
            [-122.348000, 47.608000],
            [-122.355000, 47.608000],
            [-122.355000, 47.602000]
          ]
        ]
      ]
    }
  }
}

عرض خطوط تساوي الزمن على الخريطة

بما أنّ واجهة برمجة التطبيقات تعرض بيانات GeoJSON عادية، يمكنك عرض الاستجابة باستخدام Maps JavaScript API. تتيح فئة google.maps.Data استخدام GeoJSON بشكلٍ أصلي، ما يعني أنّك لست بحاجة إلى عكس ترتيب إحداثيات [longitude, latitude] يدويًا.

يوضّح مقتطف JavaScript التالي كيفية إضافة الردّ من واجهة برمجة التطبيقات مباشرةً إلى خريطة:

// Assume 'map' is an initialized google.maps.Map object
// and 'responseData' is the parsed JSON payload returned by the Isochrones API.

const isochroneGeoJson = responseData.isochrone.geoJson;

// Wrap the geometry in a standard GeoJSON Feature
const geoJsonFeature = {
    type: "Feature",
    geometry: isochroneGeoJson,
    properties: {}
};

// Add the GeoJSON Feature to the map's data layer
map.data.addGeoJson(geoJsonFeature);

// Optional: Apply custom styling to the isochrone polygon
map.data.setStyle({
    fillColor: '#4285F4',
    fillOpacity: 0.3,
    strokeColor: '#4285F4',
    strokeWeight: 2
});