You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Leaflet地图图例中的双引号

解决Leaflet图例彩色框中的双引号问题

这个问题大概率是你在构建图例HTML元素时,错误地给颜色值额外添加了双引号导致的。咱们一步步来解决:

问题根源分析

你提供的getColour函数已经正确返回了不带引号的颜色值(比如'green'),但如果在拼接图例的style属性时,又给这个值套了一层双引号,就会出现渲染后彩色框里显示双引号的情况。举个错误写法的例子:

// 错误写法:多余的双引号导致问题
div.innerHTML += '<i style="background:"' + getColour(grades[i]) + '"></i> ' + grades[i];

这段代码会生成类似<i style="background:"green""></i>的HTML,浏览器解析时就会把内部的双引号显示出来。

修正后的代码示例

你只需要移除颜色值前后多余的双引号,让background样式直接引用颜色值即可。结合你的代码,完整的图例部分可以改成这样:

function getColour(d) {
    switch (d) {
        case '> 2 uur': return 'green';
        case '1 - 2 uur': return 'yellow';
        case '30 min - 1 uur': return 'orange';
        case '< 30 min': return 'red';
        default: return '#fff';
    }
};

var legend = L.control({ position: 'bottomright' });
legend.onAdd = function(mymap) {
    var div = L.DomUtil.create('div', 'info legend');
    // 定义图例的等级数组
    var grades = ['< 30 min', '30 min - 1 uur', '1 - 2 uur', '> 2 uur'];
    
    // 循环生成图例项
    for (var i = 0; i < grades.length; i++) {
        div.innerHTML += 
            '<i style="background:' + getColour(grades[i]) + '"></i> ' +
            grades[i] + '<br>';
    }
    return div;
};
legend.addTo(mymap);

如果习惯用ES6模板字符串,写法会更清晰,也不容易出错:

for (var i = 0; i < grades.length; i++) {
    div.innerHTML += `
        <i style="background:${getColour(grades[i])}"></i> ${grades[i]}<br>
    `;
}

补充:确保图例图标样式正常

别忘了给图例的<i>标签添加CSS样式,让彩色框显示正常:

.info.legend i {
    width: 18px;
    height: 18px;
    float: left;
    margin-right: 8px;
    opacity: 0.7;
    border: 1px solid #333; /* 可选:给彩色框加边框 */
}

这样修改后,图例的彩色框里就不会再出现多余的双引号啦~

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:30:28