Isochrones API-Antwort verarbeiten und visualisieren

Die Isochrones API gibt Geometrie im Standard-GeoJSON-Format gemäß RFC 7946 zurück. Die Antwort enthält immer ein MultiPolygon-Geometrieobjekt unter isochrone.geoJson (isochrone.geo_json in gRPC):

  • Koordinatenreihenfolge: Jede Position ist ein [longitude, latitude]-Paar in WGS 84-Dezimalgrad.
  • Mehrere Polygone (coordinates[i]): Erreichbare Isochronenbereiche können aus mehreren nicht zusammenhängenden Polygonen bestehen, z. B. wenn eine Hochgeschwindigkeitsbrücke oder ein Tunnel mit einem separaten erreichbaren Bereich verbunden ist oder wenn ein Polygon, das den ±180°-Antimeridian kreuzt, gemäß RFC 7946 §3.1.9 entlang des Meridians geteilt wird.
  • Äußere Hüllen und innere Löcher (coordinates[i][j]): Innerhalb jedes Polygons coordinates[i] ist der erste lineare Ring (coordinates[i][0]) die äußere Hülle, die gegen den Uhrzeigersinn verläuft. Alle nachfolgenden linearen Ringe (coordinates[i][1..k]) stellen innere Löcher dar (z. B. Seen, Parks oder nicht kartierte Bereiche), die gemäß der Rechte-Hand-Regel in RFC 7946 §3.1.6 im Uhrzeigersinn verlaufen. Jeder lineare Ring ist geschlossen (die erste und die letzte [longitude, latitude]-Position sind identisch).

Das folgende Beispiel zeigt eine MultiPolygon-Antwort, die ein Hauptpolygon mit einem inneren Loch und ein zweites, nicht zusammenhängendes Polygon enthält:

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

Isochrone auf einer Karte visualisieren

Da die API Standard-GeoJSON zurückgibt, können Sie die Antwort mit der Maps JavaScript API visualisieren. Die Klasse google.maps.Data unterstützt GeoJSON nativ. Sie müssen die Reihenfolge der [longitude, latitude]-Koordinaten also nicht manuell umkehren.

Das folgende JavaScript-Snippet zeigt, wie die API-Antwort direkt einer Karte hinzugefügt wird:

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