GeoJSON - sigcorporativo-ja/Mapea4 GitHub Wiki
GeoJSON, pese a no ser un estándar OGC (está camino de convertirse en ello), es un formato de intercambio de información geográfica muy extendido que, al igual que WFS, permite tener todos los elementos en el cliente.
Un ejemplo de GeoJSON:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
Dependiendo la fuente del GeoJSON, para añadirlo a Mapea:
:bulb: En el caso de las capas de tipo GeoJSON, se diferencia si el mismo es servido (url) o si por el contrario lo tenemos en local (source).
1.- GeoJSON local:
mapajs.addLayers(new M.layer.GeoJSON({
name: "capaJson",
source: {
type: "FeatureCollection",
features: [{
properties: {
estado: 1,
sede: "/Sevilla/CHGCOR003-Oficina de la zona regable del Genil",
tipo: "ADSL",
name: "/Sevilla/CHGCOR003-Oficina de la zona regable del Genil"
},
type: "Feature",
geometry: {
type: "Point",
coordinates: [-5.278075, 37.69374444444444]
}
}],
crs: {
properties: {
name: "EPSG:4326"
},
type: "name"
}
}));
:warning: Cuando se define completamente una capa GeoJSON en dicho formato, y se incluyen sus features, el crs de la capa no tiene por qué coincidir con el del mapa, siempre que sea uno de los que ya están predefinidos. En ese caso, Mapea se encargará de reproyectar las coordenadas de cada feature automáticamente. En el caso de no especificar crs en el GeoJSON, se entenderá que usa el establecido por defecto en el estándar: EPSG:4326
Donde:
- name: Nombre de la capa, será el mostrado en la leyenda. Debe ser único en el mapa.
- source: El propio GeoJSON, incluyendo el de los features que pueda incluir en dicho formato.
- extract: opcional Activa la consulta por click en el feature.
También es posible crear una capa vacía:
let layer = new M.layer.GeoJSON({
name: 'Prueba',
source: {
crs: {
properties: {
name: "EPSG:25830"
},
type: "name"
},
features: [],
type: "FeatureCollection"
}
});
// Para comodidad del programador,
// la operación anterior puede simplificarse así
let layer2 = new M.layer.GeoJSON({
name: "Prueba",
crs: "25830"
});
// Si los features se añaden justo después de crear la capa,
// hay que verificar primero que la capa está lista para ello
// mediante su evento M.evt.LOAD. Más adelante ya no es necesario.
layer.on(M.evt.LOAD, () => {
layer.addFeatures([f]);
});
El método .addFeatures trabaja ya con objetos M.Feature, que ya deben tener su geometría en el mismo CRS del mapa, ya que un feature no posee información de CRS propio.
2.- GeoJSON servido:
var layer = new M.layer.GeoJSON(
{name: "Provincias",
url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json"});
mapajs.addLayers(layer);
Donde:
- name: Nombre de la capa, será el mostrado en la leyenda. Debe ser único en el mapa.
- url: Url del fichero o servicio que genera el GeoJSON.
- extract: opcional Activa la consulta por click en el feature.
Si se desea personalizar un manejador propio para mostrar un popup o label al hacer click en alguno de los features, hay que establecer el atributo extract a false, para que no sólo se active nuestro manejador.
Doc API: M.layer.GeoJSON