Escribí el siguiente código javascript usando un folleto para hacer varias polilíneas rojas, cada una con una propiedad llamada "activa", que comienza como verdadera.
for (let i = 0; i < railLinks.length; i++) { var polyline = new L.geoJSON(railLinks[i].polyline, { linkNumber: railLinks[i].linkNumber, active: true, //THIS LINE DOESNT DO WHAT I THOUGHT IT WOULD style: function(active) { return { weight: 2, color: 'red' }; } }).addTo(map); polyline.on('click', function() { set = !this.active this.active = set; this.setStyle({ color: getColor(set) }); }); } function getColor(x) { return x ? 'black': '#888888'; };Estoy tratando de implementar un conmutador para que cuando haga clic en una polilínea verdadera, se convierta en falsa y viceversa.
Con esto, esperaría que el primer clic se volviera gris ("falso"), luego negro, luego gris, etc. En cambio, el primer clic se vuelve negro (lo que representa verdadero), lo que sugiere que el estado inicial no era verdadero.
Me imagino que el problema está en mi sintaxis y que
active: trueno es la misma propiedad que se cambia que la posterior
this.activeya que puedo configurar el primer activo en cualquier valor sin afectar el comportamiento al hacer clic. ¿Alguna idea de qué debería ser esto?
Para la información de cualquier persona que se encuentre con un problema similar, ahora he resuelto mi problema con el siguiente código:
for (let i = 0; i < railLinks.length; i++) { var polyline = new L.geoJSON(railLinks[i].polyline, { linkNumber: railLinks[i].linkNumber, }).addTo(map); polyline.active = true; polyline.setStyle({ weight: 2, color: 'red' }); polyline.on('contextmenu', function() { set = !this.active this.active = set; this.setStyle({ color: getColor(set) }); }); } function getColor(x) { return x ? 'black':'#888888'; };