【问题标题】:How do I prevent Leaflet concatenating attributions from multiple base layers?如何防止 Leaflet 连接来自多个基础层的属性?
【发布时间】:2020-08-13 17:56:28
【问题描述】:

我有一个使用 Leaflet 的相当基本的地图,有两个可以使用标准图层选择控件选择的基础图层。每一层都有自己的属性字符串,显示在右下角的通常位置。这是我正在使用的代码的简化版本,作为演示:

 <script>

    var zoomLevel = 6;
    var lat = 54.00366;
    var lon = -2.547855;
    
    var OSM = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            maxZoom: 18,
            attribution: 'this is the string for OSM, and should only show when OSM is selected'
    });

    var Esri_WorldImagery = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
            maxZoom: 18,    
            attribution: 'this is the string for Esri, and should only show when Esri is selected'
    });
    
    var baseMaps = {
        "Satellite": Esri_WorldImagery,
        "Open StreetMap": OSM
    
    };

    var map = L.map('map',{ 
        dragging: !L.Browser.mobile,
        center: [lat, lon],
        zoom: 6, 
        layers: [Esri_WorldImagery,OSM]
    });
    L.control.layers(baseMaps).addTo(map);
    
</script>

我遇到的问题是,当地图首次加载时,两个属性字符串被连接起来并显示为一个字符串。一旦实际选择了任一层,显示的唯一属性字符串就是适用于该层的属性字符串。

这是我服务器上测试地图的副本:

https://markgoodge.com/demo/maptest.html

如果您打开该页面,您将看到属性字符串最初显示为

“这是 Esri 的字符串,应该只在选择 Esri 时显示,这是 OSM 的字符串,应该只在选择 OSM 时显示”

这是不正确的 - 它应该只在初始加载时显示 OSM 属性,因为默认底图是 OSM。

选择任一底图,字符串将成为该图层的正确字符串。

如何阻止它这样做?如何使初始属性字符串成为默认图层的正确属性?

(这很重要的原因是,当只有两个基本地图时,它可能不是什么大问题,但是当有多个时 - 我有一个站点确实使用了几个 - 然后是初始的串联属性字符串跑了好几行,在地图底部占据了太多空间)。

编辑:我刚刚发现了两件事。首先,如果字符串相同,它们不会被连接 - 它只显示一次。其次,当它们连接时,在它们之间插入一个逗号。因此,这显然是 Leaflet 的故意行为,而不是错误或陷阱。但是,如果是这样,肯定有一个设置来覆盖它,因为在很多情况下这种行为是不合适的。我在文档中遗漏了什么吗?

【问题讨论】:

    标签: leaflet


    【解决方案1】:

    好的,想通了。抱歉,在询问之前应该进行更多实验。解决方案很简单——在初始地图选项中只包含一个(默认)图层,即:

    layers: [Esri_WorldImagery,OSM]
    

    应该是

    layers: [OSM]
    

    只加载一个默认层,并且只显示该层的属性。

    【讨论】:

    • 非常感谢您分享经验和想法 - 太棒了!!!你帮了我很多!
    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多