Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

143
Vistas
Javascript: sintaxis correcta para crear propiedades personalizadas editables (al hacer clic, alternar el color del objeto Leaflet GeoJSON)

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: true

no es la misma propiedad que se cambia que la posterior

 this.active

ya que puedo configurar el primer activo en cualquier valor sin afectar el comportamiento al hacer clic. ¿Alguna idea de qué debería ser esto?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

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'; };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda