【问题标题】:Restrict labeling to one label for MultiPolygon features将 MultiPolygon 特征的标签限制为一个标签
【发布时间】:2015-11-02 18:19:23
【问题描述】:

OpenLayers 3.10.1 中的默认标签标记了 MultiPolygon 的每个部分。我想知道是否可以只标记 MultiPolygon 中的第一个多边形。

【问题讨论】:

    标签: openlayers-3


    【解决方案1】:

    您可以使用带有geometry function 的标签使用单独的样式,这会为标签位置返回一个点。

    var styles = [
      // Style for the label
      new ol.style.Style({
        text: new ol.style.Text({..}),
        geometry: function(feature) {
            // expecting a MultiPolygon here
            var interiorPoints = feature.getGeometry().getInteriorPoints();
            return interiorPoints.getPoint(0);
        }
      }),
      // Style for the polygons
      new ol.style.Style({
        stroke: new ol.style.Stroke({...}),
        fill: new ol.style.Fill({...})
      })
    ];
    

    http://jsfiddle.net/p0acpbtg/2/

    【讨论】:

    • 太棒了! +1 ...所以不喜欢+1
    • 像魅力一样工作!太棒了。
    • 不太适合我。它以多面体中的一个多边形为中心。如果我将其更改为return interiorPoints.getPoint(1);,它将以另一个多边形为中心。如何让它以整个多面体为中心?
    • 是的,没错。它以第一个多边形的内部点为中心。但是您可以计算所有多边形的凸包(使用 JSTS 或 Turf.js),然后取该多边形的内点。或者取多边形范围的中点。
    • 适合我使用。谢谢。
    猜你喜欢
    • 2011-02-06
    • 2014-11-21
    • 2019-10-26
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2023-01-18
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多