javascript - 更改传单标签的位置

标签 javascript html css leaflet

我想为我的传单标记添加标签,然后将它们放置在标记图标的上方并水平居中。

使用 Leaflet.label 插件中的 labelAnchor 选项,我可以手动调整每个标签,以便获得我想要的内容,现在我已经为我的标签添加了固定宽度,以便我知道文本将居中。但必须有更好的方法来实现这一目标吗?

http://jsfiddle.net/NYGvibeke/frUf4/3/

<style type="text/css">

  .labeltext { width: 120px; text-align: center; border:none; }

</style>

<script type="text/javascript">

    var myIcon = L.icon({
        iconUrl: 'http://icons.iconarchive.com/icons/visualpharm/icons8-metro-       style/512/Maps-and-Geolocation-Marker-icon.png',
        iconSize:     [18, 30], 
        iconAnchor:   [10, 30], 
        labelAnchor: [-80, -40]
    });

    var layer = new L.StamenTileLayer("toner-lite", {maxZoom: 10});
    var map = new L.Map("map", {
        center: new L.LatLng(30, 100),
        zoom: 4,
        maxZoom: 12,
        minZoom: 2
    });

    map.addLayer(layer);

    var marker1 = L.marker([25, 100], {icon: myIcon}).bindLabel('This is a label text', { noHide: true, className: 'labeltext'}).addTo(map);

</script>

最佳答案

改变

.labeltext { width: 120px}

.labeltext { width: auto}

auto 值将动态调整标签的宽度。

更新

其实,这只是一部分。这是 jsfiddle 中的其余部分.基本上,您需要根据字符数动态分配位置。它需要一点校准(取决于字体/大小),但这是我为 labelAnchor 想出的:

[-label[0].length*2.5-20, -40]

关于javascript - 更改传单标签的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22559820/

相关文章:

javascript - 将 javascript 规则应用于克隆的元素

javascript - 保存到本地存储 onkeyup

javascript - 改变js中的数据百分比

html - 如何在打印页面时使用 CSS 隐藏文本

html - CSS 如何在图片底部添加文字说明?

html - react 迟钝的线排

javascript - 固定列表定位

javascript - php 不显示来自 AJAX 的变量

javascript - shopify-api-node 返回状态 401 未授权私有(private)应用程序

css - 为 Facebook 社交插件自定义 CSS