【问题标题】:Simple label on a leaflet (geojson) polygon传单(geojson)多边形上的简单标签
【发布时间】:2012-10-30 07:05:25
【问题描述】:

我正在尝试使用传单多面体对象进行我想象的相当常见的用例。

我使用 geojson 创建了 MultiPolygon:

var layer = L.GeoJSON(g, style_opts);

我想要在每个多边形的中心放置一个简单的文本标签。 (例如,将州名放在每个州的中心)。

我看过: https://groups.google.com/forum/?fromgroups=#!topic/leaflet-js/sA2HnU5W9Fw

这实际上覆盖了文本,但是当我添加一堆多边形时,它似乎以奇怪的方式使标签偏离中心,我目前无法找到问题所在。

我也看过:https://github.com/jacobtoye/Leaflet.label

但是当您将鼠标悬停在多边形上时,这似乎只会将标签放在多边形上,并且不会静态停留在多边形上。

我认为我最好的做法是使用第一个链接,并找出它改变位置的原因,但与此同时,如果有人知道在传单中的多边形上放置标签的快速简便的方法,我将非常感激。

另外,如果我对上述两个链接有任何错误的假设,请随时纠正我。

非常感谢。

【问题讨论】:

  • 遗憾的是,6 年零 4 个月后,在 Leaflet 中仍然没有更好的方法来标记多边形。内置的工具提示类不提供相同的功能,并且几乎总是需要修改和自定义类来模仿真实的地图标签。与其抱怨,不如闭嘴写一个插件。同时,我想将此链接添加到图片中。 Esri Leaflet 项目描述了这种用于标签的方法,它也适用于 Leaflet 本身:esri.github.io/esri-leaflet/examples/labeling-features.html
  • 我尝试在 vue js 中使用带有自定义 css 的 Leaflet.label 和 bindTooltip 来标记 geojson 多多边形,但这只是我的情况下的解决方案。谢谢@jhickok

标签: javascript mapping openlayers leaflet


【解决方案1】:

传单标签插件还允许使用静态标签,请参阅demo。 折线标签不是静态的唯一原因是它会随着您沿着折线移动。

您可能会做得比这更好,通过覆盖多边形的 bindLabel() 但这是一种将静态标签添加到多边形中心的简单方法:

label = new L.Label()
label.setContent("static label")
label.setLatLng(polygon.getBounds().getCenter())
map.showLabel(label);

http://jsfiddle.net/CrqkR/6/

【讨论】:

  • 感谢您的回答。设法让它发挥作用。您确实需要在调用 showLabel() 之前将标签添加到地图中:label.addTo(map)
  • 那我一定是做错了什么...感谢更新
  • 从传单 1.0 开始,标签插件已被工具提示的新核心功能所取代:leafletjs.com/reference-1.0.0.html#tooltip
【解决方案2】:

您可以使用L.geoJsononEachFeature 选项为每个多边形创建一个新的L.divIcon

L.geoJson(geoJsonData, {
  onEachFeature: function(feature, layer) {
    var label = L.marker(layer.getBounds().getCenter(), {
      icon: L.divIcon({
        className: 'label',
        html: feature.properties.NAME,
        iconSize: [100, 40]
      })
    }).addTo(map);
  }
);

【讨论】:

  • 如果您将“geoJsonData”切换为地图上的要素图层,您将如何完成这项工作?您当前的方法在开始时将标签添加到地图中。感谢您提供任何提示。
  • 如果您的L.geoJson 图层保存在名为geojson 的变量中,您可以调用geojson.clearLayers(),然后调用geojson.addData(newGeoJsonData)
  • @redshift .. 在这里查看我的答案stackoverflow.com/questions/31691297/…
猜你喜欢
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
相关资源
最近更新 更多