Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda