我一直在使用openlayers 3
并使用canvasPattern
创建了一个填充。填充工作,问题是它没有按预期工作。
我希望填充随着它填充的几何体移动,但正如您将在此示例中看到的那样:
http://fiddle.jshell.net/luigibosca/Lwrbuxfd/14/
如果你移动地图,你会注意到填充是绝对定位的,而不是相对于它填充的几何体。
提前感谢您的帮助!
答案 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
解决方案似乎不是一个有保证的解决方案。这个模式通常跟随我的平移,但有时会以不可预测的方式移动到不同的偏移。我假设这是因为渲染的源画布被剪裁的方式: