首页 > 解决方案 > 传单地图美国和 fitBounds

问题描述

我创建了一个函数,它在页面加载时向我的传单地图添加了几层。
之后,我希望它基于这些图层使视图居中。

let layerGroup = L.featureGroup();
... 
    // add multiple layers
    layerGroup.addLayer(L.geoJson(feature))
...
leafletMap.addLayer(layerGroup);
leafletMap.fitBounds(layerGroup.getBounds());

它目前按预期工作,并且地图会放大以适应边界。

但是,当美国是这些图层之一时,地图会完全缩小,因为附近的岛屿。

在此处输入图像描述

有没有办法解决这个问题,从而不缩小地图的情况下放大美国?

提前致谢

标签: leaflet

解决方案


这不是那么容易修复,我不知道您的数据如何。

解决方法是检查lng坐标是否为负,然后将 360 添加到它:

L.geoJson(feature,{
  coordsToLatLng: function coordsToLatLng(coords) {
    // the coords came into the function as //lng,lat,alt
    if(coords[0] < 0){
      coords[0] = coords[0]+360;
    }
    // the coords goes out as //lat,lng,alt
    return new L.LatLng(coords[1], coords[0], coords[2]);
  }
})

推荐阅读