gpt4 book ai didi

javascript - 传单 getBounds() 错误

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

我正在尝试获取动态添加到 map 的标记的边界。我的目标是动态地将标记添加到 map 中,并使 View 自动缩放以适合 map 上所有标记的边界。以下是我当前的代码以及我迄今为止尝试过的内容:

起点是经纬度数组:

该网页提供了用户可以选择和取消选择的地址和复选框的列表。选择所需的地址后,用户可以单击 map 上的 View ,标记将出现在 map 上(这工作正常,我只是无法将 View 缩放到这些标记的边界)

我有一个循环,可以提取每个检查地址的纬度和经度并将其插入数组中,如下所示:

latLng.push(42.9570316,-86.04564429999999);
latLng.push(43.009381,-85.890041);

...这是一个循环,因此它始终包含所需数量的值并输出:

latLng = [42.9570316,-86.04564429999999,43.009381,-85.890041,43.11996200000001,-85.42854699999998,43.153376,-85.4730639,42.8976947,-85.88893200000001];

var thisLatLng = L.latLng(latLng);

console.log(thisLatLng); // this returns Null

mymap.fitBounds(group); // returns Error: Bounds are not Valid

mymap.fitBounds(group.getBounds()); // returns group.getBounds() is not a function

我也尝试过以此作为起点:

latlng.push(L.marker([42.9570316,-86.04564429999999]));
latlng.push(L.marker([43.009381,-85.890041]));

...这包含在一个循环中,该循环会产生以下输出

latLng = [L.marker([42.9570316,-86.04564429999999]),L.marker([43.009381,-85.890041]),L.marker([43.11996200000001,-85.42854699999998]),L.marker([43.153376,-85.4730639]),L.marker([42.8976947,-85.88893200000001])];

console.log(latLng); // this returns makrers with the correct lat & lng above

var group = new L.featureGroup(latLng);

console.log(group); //this returns a Null featureGroup

mymap.fitBounds(group); // returns Error: Bounds are not valid

mymap.fitBounds(group.getBounds()); // returns Error: Bounds are not valid

我不知道如何进行这项工作,我已经尝试了 stackoverflow 上发布的几个答案,并尝试尝试遵循文档,但似乎没有给出预期的结果。

更新

我删除了 latLng.push(L.marker([42.9570316,-86.04564429999999])); 循环并替换为以下内容:

我使用 var group = new L.featureGroup(); 创建了一个功能组,然后使用 marker.addTo(group); 在循环中向其添加了标记正如我所期望的那样,将所有标记插入功能组,但无法获得边界。

mymap.fitBounds(group.getBounds()); // returns Error: Bounds are not valid

这是 console.log(group); 输出:

enter image description here

最佳答案

我完全不这么认为

latLng = [L.marker([42.9570316,-86.04564429999999]),L.marker([43.009381,-85.890041]),L.marker([43.11996200000001,-85.42854699999998]),L.marker([43.153376,-85.4730639]),L.marker([42.8976947,-85.88893200000001])];

可以工作。在传单中,您不能只创建一个变量并说它是一个标记对象。您需要使用类似 L.marker()

的方法

您需要做的是创建一个标记并将其添加到featureGroup

var group = new L.featureGroup();
for (var i = 0; i < yourMarkers.length; i++) {
L.marker([51.5, -0.09]).addTo(group);
}
map.fitBounds(group.getBounds());

group 现在将包含多个标记。

你也可以尝试这个:

var coordinates = new Array();
for (var i = 0; i < yourMarkers.length; i++) {
var marker = L.marker([51.5, -0.09]);
coordinates.push(marker);
}
var group = new L.featureGroup(coordinates);
map.fitBounds(group.getBounds());

更新

相关函数是这个:

function showResult(lat, lng) { 
var marker = L.marker([lat, lng])
.bindPopup('yourPopup').on("popupopen", onPopupOpen).addTo(group);
map.addLayer(group);
map.fitBounds(group.getBounds());
}

您只需在其中添加 fitBounds() 即可。

关于javascript - 传单 getBounds() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459688/

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