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

196
Visualizações
OpenLayers: Alternar representación de lienzo de capa

Estoy tratando de permitir que un usuario use diferentes funcionalidades de representación de capas de OpenLayers 6 en una sola aplicación de mapa, por ejemplo, el " espía de capa " y el "deslizamiento de capa " para dos capas de TileWMS.

Idealmente, estas funcionalidades deberían activarse/activarse mediante un botón de alguna descripción. Para esto, creé una casilla de verificación html llamada spy_toggle , con un detector de eventos adjunto como:

 checkbox_spy.addEventListener('change', function() { if (this.checked) { spy_toggle(true); //layer spy is inactive } else { spy_toggle(false); //layer spy is active } });

La función spy_toggle es principalmente un envoltorio para la magia de renderizado OL, con un parámetro de render para alternar el renderizado de la siguiente manera:

 function swipe_toggle(render) { if (render === true) { // code from the example starts here layer1.on('prerender', function (event) { const ctx = event.context; ctx.save(); ctx.beginPath(); if (mousePosition) { // only show a circle around the mouse const pixel = getRenderPixel(event, mousePosition); const offset = getRenderPixel(event, [ mousePosition[0] + radius, mousePosition[1], ]); const canvasRadius = Math.sqrt( Math.pow(offset[0] - pixel[0], 2) + Math.pow(offset[1] - pixel[1], 2) ); ctx.arc(pixel[0], pixel[1], canvasRadius, 0, 2 * Math.PI); ctx.lineWidth = (5 * canvasRadius) / radius; ctx.strokeStyle = 'rgba(0,0,0,0.7)'; ctx.stroke(); } ctx.clip(); }); // code from the example ends here } else { // inversing the rendering? layer1.on('prerender', function (event) { const ctx = event.context; ctx.restore(); }); ...

Puedo detener el recorte de la capa real llamando a restaurar el contexto del lienzo a través ctx.restore(); .

Sin embargo, lucho por eliminar el trazo del círculo negro alrededor del mouse. Supongo que obteniendo el radio actual del círculo y llamando a ctx.clearRect(coords); , que parece poco práctico.

En este punto, me pregunto si este enfoque para alternar la funcionalidad es sensato, posible o demasiado complicado.

about 4 years ago · Juan Pablo Isaza
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