Leaflet:如何将文本标签添加到自定义标记图标?

red*_*ift 24 leaflet mapbox

是否可以将文本添加到自定义图标标记?我想避免在图像编辑器中编辑图标只是为了添加文本.

我创建了自定义图标标记,如下所示:

var airfieldIcon = L.icon({
        iconUrl: 'images/airfield.png',
        iconSize: [48,48]
});

var airfield = L.geoJson (airfield, {
    pointToLayer: function(feature,latlng){
        return L.marker(latlng, {
            icon: airfieldIcon
        })
    }
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

如何将"Banff Airfield"文本添加为​​此图标的标签?使用图像编辑器是最简单,最有效的方法吗?如果是这样,我会采用这种方法,但想知道是否有更好的方法.谢谢!

iH8*_*iH8 37

你可以使用L.DivIcon:

表示使用简单div元素而不是图像的标记的轻量级图标.

http://leafletjs.com/reference.html#divicon

把你的图像和文字放在它的HTML中,撒上一些CSS,使它看起来像你想要的那样,你很高兴去

new L.Marker([57.666667, -2.64], {
    icon: new L.DivIcon({
        className: 'my-div-icon',
        html: '<img class="my-div-image" src="http://png-3.vector.me/files/images/4/0/402272/aiga_air_transportation_bg_thumb"/>'+
              '<span class="my-div-span">RAF Banff Airfield</span>'
    })
});
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用Leaflet.Label插件:

Leaflet.label是一个插件,用于在小册子供电的地图上为标记和形状添加标签.

  • “注意:从 Leaflet 1.0 开始,L.Label 作为 L.Tooltip 添加到 Leaflet 核心,并且该插件已被弃用。” (2认同)

Mar*_*ark 22

从传单版本1.0.0开始,您可以在不使用插件的情况下添加标签(该插件已经被纳入核心功能).

例:

var marker = L.marker(latlng)
    .bindTooltip("Test Label", 
    {
        permanent: true, 
        direction: 'right'
    }
);
Run Code Online (Sandbox Code Playgroud)

这会在地图上生成一个标记为"测试标签"的标记,该标记始终显示在标记图标的右侧.

  • 很好的答案!很高兴 Leaflet 将其纳入核心包。API 参考在这里 - http://leafletjs.com/reference-1.0.3.html#layer-bindtooltip (2认同)

tho*_*prr 6

为了进一步探索马克的答案,如果您想知道一种在标记上添加文本(数字)的简单方法,如下所示:

在此输入图像描述

您只需按以下步骤操作:

1.实例化一个图标(map.js)

var stepIcon = L.icon({
    iconUrl: 'graphic/yellow-circle.png', // the background image you want
    iconSize: [40, 40], // size of the icon
});
Run Code Online (Sandbox Code Playgroud)

2.1 设置图标(map.js)

var marker = new L.marker([39.5, 77.3], { icon:stepIcon});
marker.bindTooltip("12" //specific number, {
                            permanent: true,
                            direction: 'center',
                            className: "my-labels"
                         });
marker.addTo(map);
Run Code Online (Sandbox Code Playgroud)

2.2 设置图标(map.css)

.leaflet-tooltip.my-labels {
  background-color: transparent;
  border: transparent;
  box-shadow: none;
  font-weight: bold;
  font-size: 30px;
  }
Run Code Online (Sandbox Code Playgroud)

确保您已将.css文件导入到.html页面中。