Ответ 1
Насколько я могу судить, нет способа сделать происхождение шаблона заливки после карты или геометрии, поскольку она подкрашивается или перемещается при использовании ее с векторными слоями. Openlayers просто использует шаблон как заполнение без его перевода, поэтому он всегда будет статически расположен относительно холста.
Однако PR # 5854 представляет пример, где он работает. Он пока не отображается на странице примеров, но может быть просмотрен на http://jsfiddle.net/61b7szjn/.
Разница между этим и вашим примером заключается в том, что он использует источник ImageVector (что делает его слоем изображения). Это сделает его работу, например, в пример:
var imageVectorLayer = new ol.layer.Image({
source: new ol.source.ImageVector({
source: vectorSource,
style: styleFunction
}),
})
Использование слоев изображения для векторных данных может оказаться неприемлемым для всех ситуаций, поэтому добавление поддержки для перевода шаблона заполнения похоже на большой материал PR.
Изменить:
При дальнейшем тестировании кажется, что решения ImageVector
не являются гарантированным исправлением. Шаблон обычно следует по мере панорамирования, но иногда он непредсказуем переходит к разным смещениям. Я предполагаю, что это связано с тем, как обрезается обработанный холст источника: