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

231
Visualizações
Js OpenLayers 'drawend': cómo configurar ID sin que las funciones se eliminen después de dibujarse

Somos bastante nuevos con JavaScript y OpenLayers y estamos un poco luchando. En la función addInteraction(), permitimos que los usuarios dibujen características (usando polígonos, círculos, etc.). En nuestra aplicación web actual, los usuarios pueden dibujar fácilmente esas características y pueden dibujar múltiples características.

 let draw; // global so we can remove it later function addInteraction() { const value = typeSelect.value; if (value !== 'None') { draw = new ol.interaction.Draw({ source: source, type: typeSelect.value, }); map.addInteraction(draw); } }

Esto funciona bien. Ahora, queremos agregar ID a las características recién dibujadas:

 let draw; // global so we can remove it later function addInteraction() { const value = typeSelect.value; if (value !== 'None') { draw = new ol.interaction.Draw({ source: source, type: typeSelect.value, }); draw.on('drawend', function(event) { var id = uid(); // create a unique id // it is later needed to delete features event.feature.setId(id); // give the feature this id }); map.addInteraction(draw); } }

Sin embargo, ahora solo podemos dibujar una característica. Después de eso, cada vez que intente dibujar una nueva característica, se eliminará sola. Y mucho menos, no sabemos cómo recuperar la identificación.

La función uid():

 // creates unique id's function uid(){ var id = 0; return function() { if (arguments[0] === 0) { id = 0; } return id++; } }

¿Por qué es esto y cómo se puede solucionar?

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Su función uid devuelve otra función, por lo que siempre establece la ID de su función en esa función, por lo tanto, sus funciones siempre obtienen la misma ID.

Puede confirmar esto fácilmente registrando en la consola el ID generado, mostrará que es una función y no un número.

Para obtener el comportamiento deseado, primero debe llamar a la función uid() para obtener la función devuelta, como esta:

 var counterFunction = uid() draw.on('drawend', function(event) { var id = counterFunction(); event.feature.setId(id); });

la recuperación de ID funciona a través de feature.getId() .

about 4 years ago · Santiago Gelvez 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