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
Activar la herramienta de dibujo del cuadro de mapa solo dentro del límite de la capa

Tengo un mosaico de mapbox geojson visualizado en un mapa. Actualmente puedo dibujar formas como polígonos, polilíneas y agregar puntos al mapa. Pero ahora quiero limitar la herramienta de dibujo para que solo permita dibujar dentro de los límites de la capa geojson. ¿Cómo haría esto? Lo que tengo actualmente, permite que el cursor cambie a un símbolo de desplazamiento cuando está fuera del mapa, y a un símbolo de cruz cuando está dentro del mapa.

Pero una vez que hago clic en los botones de la herramienta de dibujo, anula esto y permite que el usuario dibuje donde quiera.

 mapboxgl.accessToken = config.MAPBOX_PUBLIC; const map = new mapboxgl.Map({ attributionControl: false, container: "map", // container ID style: "mapbox://styles/mapbox/outdoors-v10", center: [-69.45, 45.07], // starting position [lng, lat] zoom: 8, // starting zoom }); export function makeClickableArea() { map.on("load", () => { map.addSource('maine', { 'type': 'geojson', 'data': { 'type': 'Feature', 'geometry': { 'type': 'Polygon', // These coordinates outline Maine. 'coordinates': [ [ [-67.13734, 45.13745], [-66.96466, 44.8097], [-68.03252, 44.3252], [-69.06, 43.98], [-70.11617, 43.68405], [-70.64573, 43.09008], [-70.75102, 43.08003], [-70.79761, 43.21973], [-70.98176, 43.36789], [-70.94416, 43.46633], [-71.08482, 45.30524], [-70.66002, 45.46022], [-70.30495, 45.91479], [-70.00014, 46.69317], [-69.23708, 47.44777], [-68.90478, 47.18479], [-68.2343, 47.35462], [-67.79035, 47.06624], [-67.79141, 45.70258], [-67.13734, 45.13745] ] ] } } }); // Add a new layer to visualize the polygon. map.addLayer({ 'id': 'maine', 'type': 'fill', 'source': 'maine', // reference the data source 'layout': {}, 'paint': { 'fill-color': '#0080ff', // blue color fill 'fill-opacity': 0.5 } }); // Add a black outline around the polygon. map.addLayer({ 'id': 'outline', 'type': 'line', 'source': 'maine', 'layout': {}, 'paint': { 'line-color': '#000', 'line-width': 3 } }); }); changeMouseSymbol(); } // add the draw tool function changeMouseSymbol() { const modes = MapboxDraw.modes; var draw = new MapboxDraw({ displayControlsDefault: false, // Select which mapbox-gl-draw control buttons to add to the map. controls: { point: true, line_string: true, polygon: true, },}); map.addControl(draw); map.on("mouseover", "maine", () => { map.getCanvas().style.cursor = "crosshair"; }); map.on("mouseleave", "maine", () => { map.getCanvas().style.cursor = ""; }); }
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