Javascript 传单getBounds()错误

Javascript 传单getBounds()错误,javascript,leaflet,Javascript,Leaflet,我正在尝试获取动态添加到地图的标记的边界。我的目标是动态地向地图添加标记,并使视图自动缩放以适应地图上所有标记的边界。以下是我当前的代码和我迄今为止尝试过的代码: 起点是一系列lat和lng: 该网页提供了一个地址列表和复选框,用户可以选择和取消选择。选择所需的地址后,用户可以单击“地图上的视图”,makrers将出现在地图上(这非常有效,我只是无法将视图缩放到这些标记的边界) 我有一个循环,它为每个选中的地址提取lat和lng,并将其推入如下数组: latLng.push(42.9570316

我正在尝试获取动态添加到地图的标记的边界。我的目标是动态地向地图添加标记,并使视图自动缩放以适应地图上所有标记的边界。以下是我当前的代码和我迄今为止尝试过的代码:

起点是一系列lat和lng:

该网页提供了一个地址列表和复选框,用户可以选择和取消选择。选择所需的地址后,用户可以单击“地图上的视图”,makrers将出现在地图上(这非常有效,我只是无法将视图缩放到这些标记的边界)

我有一个循环,它为每个选中的地址提取lat和lng,并将其推入如下数组:

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(左标记([42.9570316,-86.045644299999])循环并替换为以下内容:

我用
var group=new L.featuregroup()创建了一个featuregroup
然后使用
marker.addTo(group)在循环中向其添加标记这将所有标记按我的预期推入featuregroup,但无法获得边界

mymap.fitBounds(group.getBounds()); // returns Error: Bounds are not valid
下面是
console.log(组)的内容输出:


我一点也不这么认为

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());
更新

有关的职能是:

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()

感谢您的回复。这并不能解决两个问题。1是我的错,因为我没有很好地解释起点,我将更新我的问题,以更好地解释这是如何动态更新的。2因为这是动态创建的,并且值总是在更改,所以我不能静态地和marker1、marker2…等类似
var group=new L.featureGroup([marker1、marker2、marker3])我必须能够使用一个包含数组的变量来实现这一点,就像文档建议的那样。您认为有可能使用一个简单的工作JSFIDLE吗?对我来说,帮你解决这个问题会容易得多。我一直在做一个,但这个页面非常复杂,有很多活动部件,所以我试图找出如何提取出需要的和相关的内容,但问题是所有内容都与用户的生活相关联。我不想发布一个包含2000行代码的文章,我觉得这不会有什么帮助。我理解没有问题。没有它我会试试的。因此,在循环中,您必须在每个位置上迭代,以创建一个带有
L.marker(yourPosition
)的标记。仍然在这个循环中,最后:将这个标记添加到
组(在循环外部定义)中,而不是将其推到数组中。我将编辑我的回答。
function showResult(lat, lng) { 
    var marker = L.marker([lat, lng]) 
    .bindPopup('yourPopup').on("popupopen", onPopupOpen).addTo(group); 
    map.addLayer(group); 
    map.fitBounds(group.getBounds()); 
}