【问题标题】:Leaflet zoom and pan传单缩放和平移
【发布时间】:2013-04-14 20:07:38
【问题描述】:

我觉得这里有点愚蠢......

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

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

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

应该很简单,我只是不明白。

请帮忙

【问题讨论】:

  • 你在寻找边界框

标签: javascript map zooming leaflet pan


【解决方案1】:

查看L.Map.fitBoundsL.FeatureGroup.getBounds。所以你的代码可能看起来像:

map.fitBounds(markers.getBounds());

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

【讨论】:

    【解决方案2】:

    很简单....

    只需要添加

    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
    }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      • 2015-08-08
      • 2013-12-12
      • 2016-03-10
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多