Más

Mapbox.js setStyle de manera diferente para cada elemento

Mapbox.js setStyle de manera diferente para cada elemento


Estoy usando geoJson en un featureLayer para poder usar setFilter-Function. Mi pregunta es: ¿Cómo puedo usar la función setStyle-Function y dar a los elementos con diferentes propiedades diferentes colores?

Mi código:

var jsonLayer = L.mapbox.featureLayer (geoJson) .addTo (mapa); // Filtro para start_year jsonLayer.setFilter (function (f) {return f.properties ["start_date"] <= outyear;}) jsonLayer.setStyle (getStyle (this)); function getStyle (feature) {return {stroke: '# 555555', strokewidth: 1, fillColor: getColor (feature)}}; function getColor (feature) {if (feature.properties.start_date <= "1700") {return "# c78432"}; else if (feature.properties.start_date> = "1800") {return "# F9A63F";} else {return "# B8B8B8"};}

Obviamente, esto no funciona correctamente.


Use el método setStyle () para establecer el estilo para todas las características, y use el método eachLayer () para establecer el estilo por característica.

Entonces, algo como:

var jsonLayer = L.mapbox.featureLayer (geoJson) .addTo (mapa); // establece el estilo para todas las funciones jsonLayer.setStyle ({stroke: '# 555555', strokewidth: 1}); // establecer el estilo por característica jsonLayer.eachLayer (function (layer) {var fillColor = "# B8B8B8" if (layer.feature.properties.start_date <= "1700") {fillColor = "# c78432";} else if (layer .feature.properties.start_date> = "1800") {fillColor = "# F9A63F";} layer.setStyle ({fillColor: fillColor… (otras opciones de estilo de ruta)});});

Por supuesto, no necesitas el primerojsonLayer.setStyle ()si ya sabe que va a establecer el estilo a nivel de función.

No lo he probado, pero debería funcionar.