Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

140
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda