Isochrones API מחזיר גיאומטריה בפורמט GeoJSON סטנדרטי שתואם ל-RFC 7946. התגובה תמיד מכילה אובייקט גיאומטרי מסוג MultiPolygon בשדה isochrone.geoJson (isochrone.geo_json ב-gRPC):
- סדר הקואורדינטות: כל מיקום הוא זוג
[longitude, latitude]במעלות עשרוניות של WGS 84. - כמה פוליגונים (
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]
]
]
]
}
}
}
הצגת האיזוכרון במפה
מכיוון שה-API מחזיר GeoJSON סטנדרטי, אפשר להציג את התשובה באמצעות Maps JavaScript API. הכיתה google.maps.Data תומכת ב-GeoJSON באופן מקורי, כך שלא צריך להפוך באופן ידני את סדר הקואורדינטות של [longitude,
latitude].
קטע הקוד הבא ב-JavaScript מדגים איך להוסיף את התגובה מה-API ישירות למפה:
// 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
});