Estoy utilizando leaflet para mostrar una lista de nombres de países en un panel lateral. También los estoy mostrando resaltados en un mapa del mundo.
Cuando hago clic en un nombre en el panel lateral, quiero cambiar el color del país asociado en el mapa.
Aquí hay un fragmento de mi código:
MOSTRAR LA LISTA DE NOMBRES DE PAÍSES EN EL PANEL LATERAL
$('#sidecol').empty();
$('#sidecol').html(COUNTRIES)
for (i=0; i < featureCollection.features.length; i++){
//console.log(featureCollection.features[i].properties.NAME);
$('#sidecol').append("div class = cntrys id = cntry_" + i + 'center><p class="title"><a href = #>' + featureCollection.features[i].properties.NAME + '/a>/center>br>')
cntryIds.push(featureCollection.features[i].id) //country id
}
RELLENO DE COLOR PARA EL PAÍS ELEGIDO
function getColor(d) {
cntryIds.forEach(function(value){
//alert('index: ' + index);
alert('D is ' + d);
alert(value);
return d == value ? 'green' :
'orange';
});
}
FUNCIÓN DE ESTILO LLAMADA CUANDO SE HACE CLIC EN EL NOMBRE DEL PAÍS EN EL PANEL LATERAL
function newstyle(value) {
//alert('1 ' + value);
return {
fillColor: getColor(value),
weight: 2,
opacity: 1,
color: 'white',
dashArray: '3',
fillOpacity: 0.7
};
}
EVENTO DE CLIC DEL NOMBRE DEL PAÍS EN EL PANEL LATERAL
$(".cntrys").each(function(index, value) {
//console.log('cntrys' + index + ': ' + $(this).attr('id') + ' xxx: ' + cntryIds[index]);
$(this).click(function(){
//alert($(this).attr('id') + " country id: " + cntryIds[index]);
countries = L.geoJson(featureCollection,
{
style: newstyle(cntryIds[index]),
onEachFeature: onEachFeature
}).addTo(map);
//console.log(getData());
map.fitBounds(countries.getBounds().pad(0.5));
});
});
Estoy intentando cambiar la opción fillColor en la función newstyle a través de la función getColor. Cualquier ayuda o sugerencia es muy asociada...
0 votos
Para este tipo de preguntas sobre programación, puedes tener un apoyo más rápido en Stack Overflow.
0 votos
@ghybs ¿Puedo mover la pregunta a SO o la vuelvo a preguntar?
0 votos
Si la respuesta de abajo no le sirve, no dude en trasladarla a SO. Si no puede, simplemente vuelva a preguntar en SO.