Gérer et visualiser la réponse de l'API Isochrones

L'API Isochrones renvoie la géométrie au format GeoJSON standard, conformément à la norme RFC 7946. La réponse contient toujours un objet géométrique MultiPolygon sous isochrone.geoJson (isochrone.geo_json dans gRPC) :

  • Ordre des coordonnées : chaque position est une paire [longitude, latitude] en degrés décimaux WGS 84.
  • Polygones multiples (coordinates[i]) : les zones isochrones accessibles peuvent être constituées de plusieurs polygones disjoints (par exemple, lorsqu'un pont ou un tunnel à grande vitesse se connecte à une poche accessible distincte, ou lorsqu'un polygone traversant l'antiméridien ±180° est divisé le long du méridien conformément à la section 3.1.9 de la RFC 7946).
  • Enveloppes extérieures et trous intérieurs (coordinates[i][j]) : dans chaque polygone coordinates[i], le premier anneau linéaire (coordinates[i][0]) est l'enveloppe extérieure enroulée dans le sens inverse des aiguilles d'une montre, et tous les anneaux linéaires suivants (coordinates[i][1..k]) représentent des trous intérieurs (tels que des lacs, des parcs ou des poches non cartographiées) enroulés dans le sens des aiguilles d'une montre conformément à la règle de la main droite de la section 3.1.6 de la RFC 7946. Chaque anneau linéaire est fermé (ses première et dernière positions [longitude, latitude] sont identiques).

L'exemple suivant montre une réponse MultiPolygon contenant un polygone principal avec un trou intérieur et un deuxième polygone disjoint :

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

Visualiser l'isochrone sur une carte

Étant donné que l'API renvoie un fichier GeoJSON standard, vous pouvez visualiser la réponse à l'aide de l'API Maps JavaScript. La classe google.maps.Data est compatible de manière native avec GeoJSON, ce qui signifie que vous n'avez pas besoin d'inverser manuellement l'ordre des coordonnées [longitude, latitude].

L'extrait de code JavaScript suivant montre comment ajouter la réponse de l'API directement à une carte :

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