Más

Configuración de propiedades de geoJSON en OpenLayers

Configuración de propiedades de geoJSON en OpenLayers


Tengo un mapa con capas que tienen atributos similares. Quiero agregar una función que cuando selecciona una característica en una capa, busca una característica con propiedades similares en otra característica (en este casoNOMBRE) y si se encuentra una propiedad de característica similar, se modifica el estilo de la característica coincidente.

Tengo un JSfiddle que intenta lograr esto aquí: http://jsfiddle.net/TimLucas/nmd2vsww/6/

La función se llama mediante el segundo botón. Como puede ver elobtener()de características funciona desde la función llamada por el primer botón.

Aquí principalmente tengo problemas con la forma de establecer propiedades (en lugar de obtenerlas) en el archivo VectorSource GeoJSON. yo suelo.attr ()pero no estoy seguro de si eso realmente funciona.

¿Alguien sabe como hacer esto?


Editado:

Hay varios errores en su código, a saber:

  1. Sus funciones de estilo usan feature.getGeometry (). GetType (); Esto siempre devolverá "Punto" para una geometría de Punto.

Una función de estilo debería ser algo como:

var styleFunction1 = función (característica, resolución) {if (feature.get ("tipo")) {return styles1 [feature.get ("tipo")]; } return styles1 ["Punto"]; };
  1. Su nuevo ol.interaction.Select ({}); no tiene un atributo de estilo, esto significa que siempre usará el estilo predeterminado para las características seleccionadas

Pásale un estilo:

select = new ol.interaction.Select ({condición: ol.events.condition.click, estilo: blueCircle});
  1. La devolución de llamada del botón de búsqueda tiene varios errores:

    • cuando encuentra una característica coincidente, almacena su índice en selectArray
    • debe usar set () para establecer un nuevo atributo en una característica

Una mejor función:

FindButton.addEventListener ('click', function () {if (select) {// Obtiene el nombre de la característica var features = select.getFeatures (); var selectedFeature = features.item (0); var name = selectedFeature.get ("NAME"); // Encuentra el nombre correspondiente en otra capa var otherFeatures = Layer2Source.getFeatures (); for (var i = 0; i 

Respuesta original (para contexto)

Aunque no estoy seguro de cómo puedo hacer que las características encontradas se vuelvan a dibujar usando el mismo estilo (supongo que podría asignarle un nuevo estilo usando feature setStyle (http://openlayers.org/en/v3.1.1/apidoc/ ol.Feature.html? unstable = true # setStyle)), me las arreglé para reescribir su código para establecer el atributo en características similares:

var FindButton = document.getElementById ('buscar-nombre-sim'); FindButton.addEventListener ('click', function () {if (select) {// Obtiene el nombre de la característica var features = select.getFeatures (); var feature = features.item (0); var id = feature.get ("NAME"); // Encuentra el nombre correspondiente en otra capa // esta matriz contiene características coincidentes var selectArray = []; // recorre todas las características en la capa para (var i = 0; i  0) {for (var j = 0; j 

Ver el vídeo: GIS with Openlayers part1. How to add #GeoJSON on #Openlayers map?