“打开图层3”功能填充“画布”未固定到功能

时间:2016-09-29 19:59:52

标签: javascript html5-canvas openlayers-3

我一直在使用openlayers 3并使用canvasPattern创建了一个填充。填充工作,问题是它没有按预期工作。

我希望填充随着它填充的几何体移动,但正如您将在此示例中看到的那样:

http://fiddle.jshell.net/luigibosca/Lwrbuxfd/14/

如果你移动地图,你会注意到填充是绝对定位的,而不是相对于它填充的几何体。

  • 我使用填充错了吗?
  • 是否有人知道如何使填充与几何体一起移动?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

据我所见,当使用矢量图层时,无法使填充图案原点跟随地图或几何图形,因为它是平移或移动的。 Openlayers只使用模式作为填充而不进行翻译,因此它将始终相对于画布静态定位。

但是,PR #5854引入了一个可行的示例。它尚未在示例页面上显示,但可以在http://jsfiddle.net/61b7szjn/上查看。

这与您的示例之间的区别在于它使用ImageVector源(使其成为图像层)。这样做会使其有效,例如在example

var imageVectorLayer = new ol.layer.Image({
    source: new ol.source.ImageVector({
      source: vectorSource,
    style: styleFunction
  }),
})

对矢量数据使用图像层可能并不适合所有情况,因此添加对填充图案的翻译支持似乎是很好的PR材料。

编辑:

经过进一步测试,ImageVector解决方案似乎不是一个有保证的解决方案。这个模式通常跟随我的平移,但有时会以不可预测的方式移动到不同的偏移。我假设这是因为渲染的源画布被剪裁的方式:

enter image description here enter image description here