Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!