Obsługa i wizualizacja odpowiedzi interfejsu Isochrones API

Interfejs Isochrones API zwraca geometrię w standardowym formacie GeoJSON zgodnym ze standardem RFC 7946. Odpowiedź zawsze zawiera obiekt geometryczny MultiPolygon w polu isochrone.geoJson (isochrone.geo_json w gRPC):

  • Kolejność współrzędnych: każda pozycja to para [longitude, latitude] w stopniach dziesiętnych WGS 84.
  • Wiele wielokątów (coordinates[i]): obszary izochroniczne mogą składać się z wielu rozłącznych wielokątów (np. gdy most lub tunel szybkiego ruchu łączy się z osobnym obszarem lub gdy wielokąt przecinający antymerydian ±180° jest podzielony wzdłuż południka zgodnie z RFC 7946 §3.1.9).
  • Powłoki zewnętrzne i otwory wewnętrzne (coordinates[i][j]): w każdym wielokącie coordinates[i] pierwszy pierścień liniowy (coordinates[i][0]) jest powłoką zewnętrzną nawiniętą w kierunku przeciwnym do ruchu wskazówek zegara, a wszystkie kolejne pierścienie liniowe (coordinates[i][1..k]) reprezentują otwory wewnętrzne (takie jak jeziora, parki lub niezmapowane obszary) nawinięte w kierunku zgodnym z ruchem wskazówek zegara zgodnie z regułą prawej dłoni RFC 7946 §3.1.6. Każda linia tworząca pierścień jest zamknięta (jej pierwsza i ostatnia pozycja [longitude, latitude] są identyczne).

Poniższy przykład pokazuje odpowiedź MultiPolygon zawierającą główny wielokąt z otworem wewnątrz i drugi rozłączny wielokąt:

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

Wizualizacja izochrony na mapie

Interfejs API zwraca standardowy format GeoJSON, więc możesz wizualizować odpowiedź za pomocą interfejsu Maps JavaScript API. Klasa google.maps.Data natywnie obsługuje GeoJSON, co oznacza, że nie musisz ręcznie odwracać kolejności współrzędnych [longitude, latitude].

Poniższy fragment kodu JavaScript pokazuje, jak dodać odpowiedź interfejsu API bezpośrednio do mapy:

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