При попытке доступа к значению растрового пикселя возвращается странная ошибка

Я пытаюсь получить доступ к значению пикселя, обслуживаемого через MapServer, из webapp через OpenLayers getFeatureInfoUrl(). Сервер отвечает msWMSFeatureInfo(): ошибка сервера WMS. Недопустимые значения I/J Я пытался найти его в Google, но не смог найти никаких подсказок о том, что может быть связано с моим запросом, только то, что значения I/J ссылаются на координаты щелчка мышью, поэтому проблема может возникать в evt.coordinate из:

var vs = this.wmsLayer
mapol.on('singleclick', function(evt) {
  document.getElementById('info').innerHTML = '';
  var viewResolution = /** @type {number} */ (view.getResolution());
  var url = vs.getSource().getGetFeatureInfoUrl(
     evt.coordinate, viewResolution, 'EPSG:4326',
      {'INFO_FORMAT': 'text/html'});
  if (url) {
    document.getElementById('info').innerHTML =
        '<iframe seamless src="' + url + '"></iframe>';
  }
});

WmsLayer использует ту же систему координат EPSG:4326, что и запрос. Может кто-нибудь помочь мне получить значение пикселя в месте нажатия:)

1 ответ

Решение

SRS координаты, которую вы передаете #getGetFeatureInfoUrl() Метод должен соответствовать проекции, которую вы предоставляете в качестве аргумента. Так что вам придется изменить свой код на

var url = vs.getSource().getGetFeatureInfoUrl(
   ol.proj.toLonLat(evt.coordinate, view.getProjection()),
   viewResolution, 'EPSG:4326', {'INFO_FORMAT': 'text/html'});
Другие вопросы по тегам