Могу ли я заставить OpenLayers 5 отправить запрос POST? - PullRequest
0 голосов
/ 10 февраля 2020

Вот моя проблема. Мне нужно отфильтровать ImageLayer с помощью OpenLayers 5, поэтому я подготовил такой код:

const params = layerToFilter.getSource().getParams();
delete params.CQL_FILTER;
params.CQL_FILTER = myFilter;
layerToFilter.getSource().updateParams(params);

Этот код работает нормально, но не в том случае, если переменная "myFilter" является слишком большой строкой. Например, с таким фильтром, как «FEATUREID IN (1,2,3,4 ... 1000)», я получаю слишком длинный URI HTTP 414.

Мой вопрос: есть ли способ заставить OpenLayers 5 использовать POST-запрос вместо GET-запроса, когда он пытается обновить sh слоев карты?

У меня есть некоторые обходные идеи, такие как создание меньшего фильтра и подготовка представления для этого фильтра на стороне базы данных, или с помощью выполнение предварительной обработки также на стороне базы данных, но было бы действительно легче, если бы я мог просто отправить запрос POST.

Любая помощь или предложение будут оценены: -)

Большое спасибо заранее.

1 Ответ

0 голосов
/ 12 февраля 2020

Geoserver может публиковать sh идентификатор объекта в качестве свойства слоя. Таким образом, вам не нужно использовать FEATUREID. Вы можете использовать CQL_FILTER вместо FEATUREID

http://locahost:8080/?CQL_FILTER=id BETWEEN 1 AND 1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...