Javascript 缩放到单击的特征

Javascript 缩放到单击的特征,javascript,leaflet,Javascript,Leaflet,我正在尝试学习传单库,并尝试缩放到单击的功能。可能是一个简单的问题,但我对js和传单很陌生。 我在这里看到了一些这样做的例子 但是我不认为这个例子是从ajax调用中获取数据,因此在这里不起作用 function callback (response) { quake = L.geoJson(response, { onEachFeature: function (feature, layer) {

我正在尝试学习传单库,并尝试缩放到单击的功能。可能是一个简单的问题,但我对js和传单很陌生。 我在这里看到了一些这样做的例子 但是我不认为这个例子是从ajax调用中获取数据,因此在这里不起作用

    function callback (response)    {
        quake = L.geoJson(response,
        {
            onEachFeature: function (feature, layer) 
            {
            layer.bindPopup( "Mag: " + String(feature.properties.mag));
            }
        }).addTo(map);
    map.fitBounds(quake.getBounds());
};


quake.on('click', function(e) {
    map.setView([e.latlng], 12)
});
我也尝试过这个,但它出现了一个错误,即没有定义标记。但如果我理解正确,L.geoJson将在默认情况下创建标记,并将它们保存到“quake”中,正如我上面的示例所示,该示例目前不起作用

marker.on('click', function(e) {
    map.setView([e.latlng], 12)
});
这里是我的代码笔的完整链接


我希望有人能给我指出正确的方向。您只需要将单击处理程序添加到onEachFeature函数中

我在下面创建了一个工作片段

var-map=L.map('map').setView([36.235412,-95.800781],2);
var地震=document.querySelector(“.earth”);
地震。addEventListener(“单击”,获取地震);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
maxZoom:19,
属性:“©;”
}).addTo(地图);
//创建一个空的geoJSON层,稍后通过单击按钮填充
var quake=L.geoJSON().addTo(map);
函数getQuake(){
$.ajax(
{
url:“https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson",
数据类型:“json”,
jsonCallback:'getJson',
成功:回调
}
)
};
函数回调(响应){
quake=L.geoJson(响应,
{
onEachFeature:功能(功能,图层)
{
bindpoop(“Mag:+String(feature.properties.Mag));
层上('点击',功能(e){
地图设置视图(e.latlng,12)
});
}
}).addTo(地图);
map.fitBounds(quake.getBounds());
};
#地图{
高度:350px;
宽度:650px;
保证金:自动;
}
#地震{
左边距:420px;
边缘底部:10px;
}
#关于{
文本对齐:居中;
}

单张演示
单张地图演示模板
来自每日M2.5+地震的数据<强>https://earthquake.usgs.gov

添加地震数据
谢谢!这正是我所希望的。实际上,我试图将处理程序放在forEach函数中,但我将其放在marker而不是层上。因此,我假设当您使用来自ajax的geoJSON时,您与该层的所有交互代码都需要在forEach方法中?您添加了一个层,因此它需要以层而不是标记为目标。是数据如果返回asnc,则需要在函数的成功部分中。