Saltar al contenido

Mapbox GL JS getBounds () / fitBounds ()

Solución:

Si desea ajustar el mapa a los marcadores, puede crear límites que contengan todos los marcadores.

var bounds = new mapboxgl.LngLatBounds();

markers.features.forEach(function(feature) {
    bounds.extend(feature.geometry.coordinates);
});

map.fitBounds(bounds);

Para obtener una solución que funcione para todos los objetos GeoJSON, no solo un conjunto de marcadores, consulte Turf.js. de Mapbox.

Este código fue muy útil para mí: https://bl.ocks.org/danswick/83a8ddff7fb9193176a975a02a896792

Pero solo para repetir lo básico en caso de que ese enlace muera:

var bounds = turf.bbox(markers);
map.fitBounds(bounds, {padding: 20});

los extent El método mencionado en el código vinculado ha quedado obsoleto en favor de bbox, Pero el resultado es el mismo.

El complemento de extensión geojson de Mapbox hará el truco. Asumiendo tu markers El objeto es GeoJSON válido, simplemente puede pasarlo al geojsonExtent() función para obtener un conjunto de límites que luego puede pasar a fitBounds().

Una vez que cargue el archivo geojson-extension.js (por ejemplo, usando un <script> etiqueta en su código HTML), debería poder hacer esto para ajustar su mapa a los límites de su GeoJSON markers objeto:

map.fitBounds(geojsonExtent(markers));

ACTUALIZAR

GeoJSONLint informa que su markers El objeto no es GeoJSON válido porque los elementos en cada posición se interpretan como cadenas, no como números. Si elimina las comillas de las coordenadas lon-lat, debería funcionar bien:

var markers = {
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "title": "Site Gallery",
        "url": "/Freelance/art-sheffield-2016/programme/site-gallery/",
        "summary": "Duis arcu tortor, suscipit eget, imperdiet nec, imperdiet iaculis, ipsum. Donec id justo. Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc. Suspendisse feugiat. Etiam rhoncus.",
        "image": "/Freelance/art-sheffield-2016/site/assets/files/1032/site_gallery.jpg",
        "marker-symbol": "venue-map-icon-blue",
        "colour": "blue"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -1.466439,
          53.376842
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Moore Street Substation",
        "url": "/Freelance/art-sheffield-2016/programme/moore-street-substation/",
        "summary": "",
        "image": null,
        "marker-symbol": "venue-map-icon-green",
        "colour": "green"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -1.477881,
          53.374798
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "title": "S1 Artspace",
        "url": "/Freelance/art-sheffield-2016/programme/s1-artspace/",
        "summary": "",
        "image": null,
        "marker-symbol": "venue-map-icon-red",
        "colour": "red"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -1.459620,
          53.380562
        ]
      }
    }
  ]
};

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *