【问题标题】:Leaflet: set Zoom level on search传单:在搜索中设置缩放级别
【发布时间】:2019-08-06 17:57:09
【问题描述】:

我正在使用插件Leaflet.Control.Search 来搜索图层组中的标记,效果很好。找到标记后,地图已经自动平移到相应位置的中心,并且正在打开标记弹出窗口。

现在,在搜索时,我想将地图的缩放级别设置为固定值。 我的地图的初始缩放级别是 12 - 但是一旦有人使用搜索,我想将其设置为 16。如何实现?我尝试实现setZoom,但我不确定正确的语法应该如何......

现在的代码是这样的:

var searchControl = new L.Control.Search({layer: markers2, propertyName: 'Name', circleLocation:true});
    searchControl.on('search_locationfound', function(e) {  
            e.layer.openPopup().openOn(map);    
            map.setZoom(16);
    });     
map.addControl( searchControl ); 

非常感谢任何提示!

ps:当我在 e.layer.openPopup().openOn(map); 之前输入 map.setZoom(16); 时,缩放效果很好,但弹出窗口没有按应有的方式打开 - 只有当我再次点击搜索时才会打开...

【问题讨论】:

    标签: search zooming leaflet


    【解决方案1】:

    您是否尝试在“找到位置”监听器中使用 map.setZoom(16); 而不是 this?
    或者,您可能想尝试map.setView()。它需要一个纬度/经度和缩放级别。您可以获取标记的 lat/lng 或弹出窗口的 lat/lng

    【讨论】:

    • 嗨,克里斯,非常感谢您的回答。我之前的文字中有一个愚蠢的错字,我一直有'map.setZoom',而不是'this.setZoom'......它工作正常,但有时弹出窗口打开,有时它们不打开。也许这是搜索插件中的一个小错误?我不太明白……
    【解决方案2】:

    尝试编辑插件,评论缩放选项(第 26 行)

    _config: {
        country: '',
        searchLabel: 'buscar en el mapa...',
        notFoundMessage: 'destino no hallado',
        messageHideDelay: 3000,
        /*zoomLevel: 18*/
    },
    

    【讨论】:

      【解决方案3】:

      我以另一种方式做到了。 之后 财产名称 我放 缩放:16

      代码如下:

       var searchControl = new L.Control.Search({
         layer: allLayers,
         propertyName: 'myKey',
         zoom: 16
       }).addTo(map);
      

      【讨论】:

        猜你喜欢
        • 2020-02-25
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 2017-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        相关资源
        最近更新 更多