4 votos

Prospecto: punto de Cambio de icono (geoJSON) en haga clic en y volver a cambiar al hacer clic en otro punto

Yo estaría muy agradecido si alguien me pudiera ayudar con esto. Tengo un geoJSON (10 puntos), que se extrae con un icono. Quiero cambiar el icono cuando hago clic en uno de los puntos y, a continuación, quiero cambiar de nuevo al hacer clic en otro punto. No sé cómo cambiarlo. Alguien me puede ayudar?

Tengo este trozo de código:

var icon1 = L.icon({
    iconUrl: 'img1.png',
    iconSize: [20,20]
});

var icon2 = L.icon({
    iconUrl: 'img2.png',
    iconSize: [20,20]
});

function clickFeature(e) {
   var layer = e.target;
   layer.setIcon(layer.options.icon = icon2);
}

function onEachFeature (feature, layer){
    layer.on({
        click: clickFeature,
    })
};

var pointsJSON = L.geoJson(points,{    
        pointToLayer: function (feature, latlng) {    
        return L.marker(latlng, {icon: icon1});
    },    
    onEachFeature: onEachFeature
    }   
).addTo(map);

Gracias!!

3voto

Om Shankar Puntos 117

No probado, pero algo como esto debería funcionar

var oldLayer = ""; // to start, declare an empty variable outside of the function scope
function clickFeature(e) {
   var layer = e.target;
   layer.setIcon(layer.options.icon = icon2);

   // only attempt to change oldLayer icon back to original if oldLayer defined
   if (oldLayer) oldLayer.setIcon(layer.options.icon = icon1);
   // keep a reference to switch the icon back on the next click
   oldLayer = layer;
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X