Используя кусок кода из этого примера: < /p>
map.on('singleclick', function (evt) {
document.getElementById('info').innerHTML = '';
const viewResolution = /** @type {number} */ (view.getResolution());
const url = wmsSource.getFeatureInfoUrl(
evt.coordinate,
viewResolution,
'EPSG:3857',
{'INFO_FORMAT': 'text/html'},
);
if (url) {
fetch(url)
.then((response) => response.text())
.then((html) => {
document.getElementById('info').innerHTML = html;
});
}
});
map.on('pointermove', function (evt) {
if (evt.dragging) {
return;
}
const data = wmsLayer.getData(evt.pixel);
const hit = data && data[3] > 0; // transparent pixels have zero for data[3]
map.getTargetElement().style.cursor = hit ? 'pointer' : '';
});
< /code>
Я пытаюсь получить информацию от одного уровня WMS (также несколько слоев) на Hover вместо использования «Singleclick». Вот текущий код для этого: < /p>
let layers;
let pixel;
map.on('pointermove', function (evt) {
if (evt.dragging) {
return;
}
//const data = ?????.getData(evt.pixel);
//const hit = data && data[3] > 0; // transparent pixels have zero for data[3]
//map.getTargetElement().style.cursor = hit ? 'pointer' : '';
let pgPattern = "_pg";
const layers = map.getAllLayers().filter(function (layer) {
return layer.get('name');
});
const viewResolution = (view.getResolution());
let url;
let mygeojson;
layers.forEach(function (layer, i, layers) {
if (layer.getVisible() && layer.get('name').match(pgPattern)) {
url = layer.getSource().getFeatureInfoUrl(
evt.coordinate,
viewResolution,
'EPSG:4326',
{'INFO_FORMAT': 'geojson'},
);
}
if (url) {
fetch(url)
.then((response) => response.json())
.then((mygeojson) => {
if (mygeojson && mygeojson.features.length > 0) {
const pixel = map.getEventPixel(evt.originalEvent);
info.style.left = pixel[0] + 'px';
info.style.top = pixel[1] + 'px';
info.style.visibility = 'visible';
info.innerText =
"id_estacion: "+mygeojson.features[0].properties.id_estacion +"\n"+
"muestreo: "+mygeojson.features[0].properties.muestreo +"\n"+
"descripcion_abordo: "+mygeojson.features[0].properties.descripcion_abordo;
}
})
}
})
});
map.getTargetElement().addEventListener('pointerleave', function () {
info.style.visibility = 'hidden';
});
< /code>
Я застрял в том, как решить неустойчивое поведение указателя после получения информации из слоя WMS (т.е. наклонение на функции слоя WMS). < /p>
Как я могу адаптировать код для решения этого? Здесь изображение проблемы:
Подробнее здесь: https://stackoverflow.com/questions/795 ... ointermove
Как адаптировать wms getfeatureinfo 'singleclick' для использования Hover ('pointrodeove') ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение