我创建了一个函数,它在页面加载时为我的传单地图添加了几个层。
之后,我希望它在这些层的基础上对视图进行中心化。
let layerGroup = L.featureGroup();
...
// add multiple layers
layerGroup.addLayer(L.geoJson(feature))
...
leafletMap.addLayer(layerGroup);
leafletMap.fitBounds(layerGroup.getBounds());目前,它按预期工作,并且地图缩放以适应边界。
然而,当美国是这些图层之一时,由于附近的岛屿,地图就会完全放大。

有没有办法解决这个问题,从而在不放大地图的情况下放大在美国的?
提前感谢
发布于 2020-10-16 10:04:03
我已经通过从我的geoJson文件中移除近岛坐标来“修正”了这个问题。
我的例子中相应的坐标是:[[[172.9041,53.0012],[173.3013,52.9256],[173.1886,52.7957],[172.9443,52.7498],[172.6404,52.8688],[172.6604,53.0086],[172.9041,53.0012]]]
如果有人找到更好的解决办法,请告诉我。
发布于 2020-10-16 09:09:46
这不是一件容易的事,我不知道你的数据是什么样子。
修复方法是检查lng coord是否为负值,然后向其添加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]);
}
})https://stackoverflow.com/questions/64385946
复制相似问题