Leaflet缩放和平移

3

我感觉有点傻...

我在地图区域中有几个标记,需要找到一种方法来平移和缩放该区域。目标是能够同时查看所有标记。

我使用以下代码插入标记:

function plotMarkers(MarkerItems) {
if (MarkerItems) {
    MarkerItems.success(function (data) {
        var len =  data.length;
        for (var i = 0; i < len; i++) {
            m = data[i];

            var XX = parseFloat(m.X.replace(",", "."));
            var YY = parseFloat(m.Y.replace(",", "."));
            var marker = L.marker(new L.LatLng(XX, YY), { icon: blueFlagIcon }).bindPopup("test");
            markers.addLayer(marker);
        }
    });// success
}
}


var markers = new L.featureGroup();
plotMarkers(myMarkers);
map.addLayer(markers);

应该很简单,只是我不太理解。请帮忙。

您正在寻找边界框。 - flup
2个回答

7

请查看L.Map.fitBoundsL.FeatureGroup.getBounds。因此,您的代码可能如下所示:

map.fitBounds(markers.getBounds());

但是如果你的MarkerItems.success是异步的(ajax等),你需要在将标记添加到图层后调用此代码。


0
很简单...
只需要添加

map.fitBounds(markers.getBounds());

在 .success() 方法内部。

完整的工作代码:

function plotMarkers(MarkerItems) {
if (MarkerItems) {
MarkerItems.success(function (data) {
    var len =  data.length;
    for (var i = 0; i < len; i++) {
        m = data[i];

        var XX = parseFloat(m.X.replace(",", "."));
        var YY = parseFloat(m.Y.replace(",", "."));
        var marker = L.marker(new L.LatLng(XX, YY), { icon: blueFlagIcon }).bindPopup("test");
        markers.addLayer(marker);
    }

    map.addLayer(markers);
    map.fitBounds(markers.getBounds());

});// success
}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接