如何在无图标的传单地图上添加纯文本标签


22

我正在寻找一种使用标记或其他任何方式在不显示任何图标的情况下在Leaflet地图上显示文本的方法。我只想显示文字,并且能够设置样式并旋转它...有什么建议吗?


1
@NikhilVJ-问答中没有讨论如何在没有相应标记的情况下提供工具提示。此处的答案讨论了如何显示文本,而没有可见标记。
ToolmakerSteve

啊,对不起,我不好
Nikhil VJ

Answers:


19

我通过使用Leaflet L.DivIcon功能解决了我的问题,该功能代表使用简单div元素而不是图像的标记的轻量级图标...这些标记具有html和className选项,可让我创建由css驱动的标签样式...


11
您介意为此提供一些代码吗?
马斯托夫'16

如果您想要标签和标记,这个答案就不知道了
Roy

@Roy-那是另外一种情况;参见L.Tooltip。如果希望标签(工具提示)始终显示,请将永久选项设置为true。
ToolmakerSteve

16

Leaflet 1.0的更新:从Leaflet 1.0开始,不推荐使用Leaflet.label插件,因为Leaflet核心已将其包含为L.Tooltip。无需包含源脚本,并且语法略有变化。用法示例:

var marker = new L.marker([39.5, -77.3], { opacity: 0.01 }); //opacity may be set to zero
marker.bindTooltip("My Label", {permanent: true, className: "my-label", offset: [0, 0] });
marker.addTo(map);

CSS样式可以像以前一样应用于类。

.my-label {
    position: absolute;
    width:1000px;
    font-size:20px;
}

似乎标记的不透明度可以完全设置为0。


在Leaflet 1.0之前: 使用Leaflet.label插件geomajor56已提及)。

<script src="scripts/leaflet.label.js"></script>

使用Leaflet Label插件,标签直接与标记相关联,但是您可以将标记的不透明度设置为几乎为零,因此只有标签可见。(如果将标记的不透明度设置为0,则相关的标签也会消失。)

var marker = new L.marker([39.5, -77.3], { opacity: 0.01 });
marker.bindLabel("My Label", {noHide: true, className: "my-label", offset: [0, 0] });
marker.addTo(map);

然后,您可以使用CSS认为合适的样式来设置标签样式:

.my-label {
    position: absolute;
    width:1000px;
    font-size:20px;
}

<script src =“ scripts / leaflet.label.js”> </ script>-将这一行添加到HTML后,页面似乎空白。我需要下载任何文件吗?
MarcinKosiński16年

@MarcinKosiński-是的,您需要从帖子中的GitHub链接下载leaflet.label.js,并将其放在您网站的名为scripts的子文件夹中。或者,您可以将代码中的URL替换为leaflet.github.io/Leaflet.label/leaflet.label.js上的托管文件(您可能还需要CSS文件;名称和位置相同,扩展名不同)。
KeithS

我试图做到这一点,任何想法如何删除背景和边框?snag.gy/JdnpyV.jpg
WantIt

当使用L.Tooltip内部onEachFeature,得到错误:“未捕获类型错误:未能执行上‘节点’‘的appendChild’:参数1的类型是‘节点’的不”。
Nikhil VJ

解决后,我将要素属性之一用作文本,必须在末尾附加.toString()marker.bindTooltip(feature.properties['prabhag_number'].toString(), {...
Nikhil VJ

4

您可以从这个Leaflet插件开始。可能根据自己的喜好创建或编辑标记。文字是否来自要素属性?


这回答的问题与提出的问题不同。这是向现有标记添加标签的方法;这不是关于如何具有标签的解释-没有标记符号。
ToolmakerSteve

0
marker.bindTooltip("text here", { permanent: true, offset: [0, 12] });

这对我有用


这回答的问题与提出的问题不同。这是向现有标记添加标签的方法;这不是关于如何具有标签的解释-没有标记符号。
ToolmakerSteve
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.