gpt4 book ai didi

zooming - Leaflet-在不使用 map 实例的情况下查找边界的缩放级别

转载 作者:行者123 更新时间:2023-12-01 00:46:16 26 4
gpt4 key购买 nike

我要做什么 :

我有点紧张,我需要能够 无需创建 map 实例并使用 map.fitBounds() 在其周围移动即可找到多个形状的传单缩放级别 .

我坚持的两种可能的解决方案:

1) 我尝试制作模拟/临时 map 以访问 map.fitBounds() 功能和模拟map.fitBounds()
- 但是不起作用,因为 map 需要实例化一个 div 容器。

2) 我一直在寻找以编程方式计算传单缩放的方法。

-我还没有找到任何关于如何做到这一点的资源。

如果您有任何策略可以帮助我将这些原始数据转换为他们的传单对应物,那就太棒了!

最佳答案

您可以创建 L.Map具有未附加到 DOM 的元素的实例:

new L.Map(document.createElement('div'), {
'center': [0, 0],
'zoom': 0
});

问题是为了计算边界,负责的方法需要知道 map 的大小。要获得大小,它将调用 getSize L.Map的方法但这将始终返回 {x:0, y:0} 的大小因为 map 的元素没有附加到 DOM。您可以覆盖 getSize返回大小的方法:
L.Map.include({
getSize: function () {
return new L.Point(400, 300);
}
});

var map = new L.Map(document.createElement('div'), {
'center': [0, 0],
'zoom': 0
});

console.log(map.getSize()); // o.Point {x: 400, y: 300}

现在您可以调用 getBoundsZoomL.Map使用您的 L.LatLngBounds :
L.Map.include({
getSize: function () {
return new L.Point(400, 300);
}
});

var map = new L.Map(document.createElement('div'), {
'center': [0, 0],
'zoom': 0
});

var featureGroup = new L.FeatureGroup([
new L.Marker([0,-45]),
new L.Marker([0,45])
]);

var zoom = map.getBoundsZoom(featureGroup.getBounds());

不用说,稍后在真实 map 上使用派生缩放级别时,只有本地图是您在 getSize 中预定义的大小时才会正确。方法。也不要忘记恢复 getSize如果您打算使用 L.Map 的方法无需重新加载。

关于zooming - Leaflet-在不使用 map 实例的情况下查找边界的缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34215394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com