Gestire e visualizzare la risposta dell'API Isochrones

L'API Isochrones restituisce la geometria nel formato GeoJSON standard conforme a RFC 7946. La risposta contiene sempre un oggetto di geometria MultiPolygon in isochrone.geoJson (isochrone.geo_json in gRPC):

  • Ordine delle coordinate: ogni posizione è una coppia [longitude, latitude] in gradi decimali WGS 84.
  • Più poligoni (coordinates[i]): le aree isocrone raggiungibili possono essere costituite da più poligoni disgiunti (ad esempio, quando un ponte o un tunnel ad alta velocità si collega a un'area raggiungibile separata o quando un poligono che attraversa l'antimeridiano ±180° viene diviso lungo il meridiano in base alla sezione 3.1.9 della RFC 7946).
  • Involucri esterni e fori interni (coordinates[i][j]): all'interno di ogni poligono coordinates[i], il primo anello lineare (coordinates[i][0]) è l'involucro esterno avvolto in senso antiorario, mentre gli anelli lineari successivi (coordinates[i][1..k]) rappresentano i fori interni (come laghi, parchi o aree non mappate) avvolti in senso orario in base alla regola della mano destra RFC 7946 §3.1.6. Ogni anello lineare è chiuso (le sue posizioni [longitude, latitude] iniziale e finale sono identiche).

L'esempio seguente mostra una risposta MultiPolygon contenente un poligono principale con un foro interno e un secondo poligono disgiunto:

{
  "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]
          ]
        ]
      ]
    }
  }
}

Visualizza l'isocrona su una mappa

Poiché l'API restituisce un GeoJSON standard, puoi visualizzare la risposta utilizzando l'API Maps JavaScript. La classe google.maps.Data supporta in modo nativo GeoJSON, il che significa che non è necessario invertire manualmente l'ordine delle coordinate [longitude, latitude].

Il seguente snippet JavaScript mostra come aggiungere la risposta dell'API direttamente a una mappa:

// 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
});