Skip to content

features

fbma edited this page Apr 14, 2021 · 9 revisions

Un feature representa un fenómeno o elemento geográfico de una capa vectorial. Está formado por un identificador, una geometría y una serie de atributos alfanuméricos o propiedades. Cuando un servidor de mapas nos devuelve una capa vectorial, nos está mandando el conjunto de todos los features o elementos que la forman:

var mapajs = M.map({
  container: "map",
  wmcfiles: ["cdau"]
});

//capa vectorial GeoJSON de provincias servida  
let 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);

// Cada feature es una provincia en esta capa
layer.on(M.evt.LOAD, function() {
  layer.getFeatures().forEach(function(feature) {
    console.log('Provincia: ' + feature.getAttribute('nombre'));
  })
});

Dispone de métodos para obtener/establecer su id, sus atributos y su geometría. Ejemplo funcional

💡 Dos features serán iguales si tienen el mismo id.

También es posible definir un feature desde cero mediante la especificación GeoJSON correspondiente:

var miFeature = new M.Feature("featurePrueba002", {
                  "type": "Feature",
                  "id": "prueba_pol_wfst.1985",
                  "geometry": {
                    "type": "Polygon",
                    "coordinates": [
                        [
                          [263770.72265536943,4085361.4590256726],
                          [230910.00600234355,4031901.3328427672],
                          [288293.77947248437,4017678.0840030923],
                          [263770.72265536943,4085361.4590256726]
                        ]
                      ]
                  },
                  "geometry_name": "geometry",
                  "properties": {
                    "cod_ine_municipio": "41091", 
                    "cod_ine_provincia": "-", 
                    "area": 1234,
                    "perimetro": 345, 
                    "cod_ine_comunidad": "-",
                    "nombre": "feature2",
                    "nom_provincia": "Cádiz",
                    "alias": "f2",
                    "nom_ccaa": "Andalucía"
                  }
              });

var capaGeoJSON = new M.layer.GeoJSON({
          source: {
            "crs": {"properties": {"name": "EPSG:25830"},"type": "name"},
            // Se añade su notacion GeoJSON
            "features": [miFeature.getGeoJSON()],
            "type": "FeatureCollection"
          },
          name: 'prueba'
        });

       mapajs.addLayers(capaGeoJSON);

       // Otra opción: añadir el feature a la capa
       //capaGeoJSON.addFeatures(miFeature);

doc API: M.Feature

Clone this wiki locally