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