Openlayers, WMS, getFeatureInfo не показывает информацию
Я пытаюсь создать WMS для отображения информации, когда кто-то нажимает на карту. К сожалению, часть с картой. on (' singleclick', функция (evt) {.... } не работает правильно. Место для информации появляется, но, к сожалению, оно пустое.
Я использовал тот же код, что и Geoserver для своих образцов карт. Я только изменил имена слоев и удалил несколько ненужных мне функций.
Теперь мой код выглядит так:
var everything = new ol.layer.Image({
source: new ol.source.ImageWMS({
ratio: 1,
url: 'http://localhost:8090/geoserver/rebola/wms',
params: {'FORMAT': format,
'VERSION': '1.1.1',
STYLES: '',
LAYERS: 'rebola:rebolagarten',
}
})
});
var one = new ol.layer.Tile({
visible: false,
source: new ol.source.TileWMS({
url: 'http://localhost:8090/geoserver/rebola/wms',
params: {'FORMAT': format,
'VERSION': '1.1.1',
tiled: true,
LAYERS: 'rebola:grundstueck',
tilesOrigin: 13.868573 + "," + 46.647116
}
})
});
var projection = new ol.proj.Projection({
code: 'EPSG:4326',
units: 'degrees',
axisOrientation: 'neu',
global: true
});
var map = new ol.Map({
controls: ol.control.defaults({
attribution: false
}).extend([mousePositionControl]),
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
everything,
one
],
view: new ol.View({
projection: projection
})
});
map.getView().on('change:resolution', function(evt) {
var resolution = evt.target.get('resolution');
var units = map.getView().getProjection().getUnits();
var dpi = 25.4 / 0.28;
var mpu = ol.proj.METERS_PER_UNIT[units];
var scale = resolution * mpu * 39.37 * dpi;
if (scale >= 9500 && scale <= 950000) {
scale = Math.round(scale / 1000) + "K";
} else if (scale >= 950000) {
scale = Math.round(scale / 1000000) + "M";
} else {
scale = Math.round(scale);
}
document.getElementById('scale').innerHTML = "Scale = 1 : " + scale;
});
map.getView().fit(bounds, map.getSize());
map.on('singleclick', function(evt) {
document.getElementById('nodelist').innerHTML = "Loading... please wait...";
var view = map.getView();
var viewResolution = view.getResolution();
var source = everything.get('visible') ? everything.getSource() : one.getSource();
var url = source.getGetFeatureInfoUrl(
evt.coordinate, viewResolution, view.getProjection(),
{'INFO_FORMAT': 'text/html', 'FEATURE_COUNT': 50});
if (url) {
document.getElementById('nodelist').innerHTML = '<iframe seamless src="' + url + '"></iframe>';
}
});
function setTileMode(tilingMode) {
if (tilingMode == 'one') {
everything.set('visible', false);
one.set('visible', true);
}
else {
everything.set('visible', true);
one.set('visible', false);
}
}
Ребята, можете ли вы помочь мне заставить код работать?
Привет, Мадлен