La API de Isochrones devuelve la geometría en el formato GeoJSON estándar que cumple con la
RFC 7946. La respuesta siempre contiene un objeto de geometría MultiPolygon en isochrone.geoJson (isochrone.geo_json en gRPC):
- Orden de las coordenadas: Cada posición es un par
[longitude, latitude]en grados decimales de WGS 84. - Varios polígonos (
coordinates[i]): Las áreas de isócronas alcanzables pueden consistir en varios polígonos separados (por ejemplo, cuando un puente o túnel de alta velocidad se conecta a un bolsillo alcanzable separado, o cuando un polígono que cruza el antimeridiano±180°se divide a lo largo del meridiano según el RFC 7946 §3.1.9). - Límites exteriores y agujeros interiores (
coordinates[i][j]): Dentro de cada polígonocoordinates[i], el primer anillo lineal (coordinates[i][0]) es el límite exterior que se extiende en el sentido contrario a las manecillas del reloj, y cualquier anillo lineal posterior (coordinates[i][1..k]) representa agujeros interiores (como lagos, parques o áreas no asignadas) que se extienden en el sentido de las manecillas del reloj según la regla de la mano derecha del RFC 7946 §3.1.6. Cada anillo lineal está cerrado (sus primeras y últimas posiciones de[longitude, latitude]son idénticas).
En el siguiente ejemplo, se muestra una respuesta MultiPolygon que contiene un polígono principal
con un agujero interior y un segundo polígono separado:
{
"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]
]
]
]
}
}
}
Visualiza la isócrona en un mapa
Debido a que la API devuelve un GeoJSON estándar, puedes visualizar la respuesta
con la API de Maps JavaScript. La clase google.maps.Data admite GeoJSON de forma nativa, lo que significa que no necesitas invertir manualmente el orden de las coordenadas [longitude,
latitude].
En el siguiente fragmento de JavaScript, se muestra cómo agregar la respuesta de la API directamente a un mapa:
// 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
});