【问题标题】:Vector labels get cutted since new ol-version (3.12.1) and VectorTile layer自新旧版本 (3.12.1) 和 Vector Tile 层以来,矢量标签被删除
【发布时间】:2016-01-11 10:41:48
【问题描述】:

自从我将我的应用程序从 ol.3.9.0 升级到 ol.3.12.1 并实现了新的 VectorTile 层和源后,我得到了一些正常但糟糕的渲染行为。问题是与 tileborders 相交的标签会被切断。我查看了源代码,但我发现无法设置选项,如部分或重叠,就像在其他使用瓷砖(地图服务器或例如)的库中一样。 有谁知道解决方法?我查看了拉取请求,这似乎不是问题。附上截图。

仅供参考 GeoJson 几何是点,问题是标签作为文本被切断。

【问题讨论】:

  • 您似乎没有使用缓冲区来生成矢量切片?
  • 我不使用任何真正的中间件来创建图块。因为数据几乎是实时的 - 我直接在 postgres-postgis db 和相关值中访问几何。我正在使用 php 库从 tilecoords 计算扩展并查询数据库,并为每个 tile 生成一个 geojson 并将其发送回 ol 库。

标签: openlayers-3


【解决方案1】:

当使用ol.source.VectorTile 时,几何图形在图块边界处被剪裁。矢量切片应该与buffer 一起使用以避免呈现问题。

在您的情况下,您可能希望使用 ol.source.Vectorol.loadingstrategy.tile 作为加载策略。

这是一个例子: http://openlayers.org/en/master/examples/vector-osm.html

  var vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function(extent, resolution, projection) {
      var epsg4326Extent =
          ol.proj.transformExtent(extent, projection, 'EPSG:4326');
      return 'http://your-webservice?bbox=' +
          epsg4326Extent.join(',');
    },
    strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
      maxZoom: 19
    }));

确保您的 GeoJSON 要素具有正确的标识符集,以便要素不会两次插入到源中(请参阅GeoJSON: Feature Objects)。

【讨论】:

  • 谢谢,会尝试这种方法,但问题不在于几何形状,在我的示例(截图)中,这些是具有奇怪样式、透明填充和描边的点(因此不应该有截断)。正常情况下,这些点标有包含信息的文本。当标签文本越过 tileborder 时,就会被切断。实际上没有几何问题。我将提供一个 jsfiddle。
  • 如果您按照@tsauerwein 的建议在获取它们时在磁贴范围周围添加一个缓冲区,标签也将起作用。只要确保缓冲区左右足够大,以防标签中的文本较长。
猜你喜欢
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多