Доброе утро,
Хорошо, так что ... Я играл с Geoserver, JQuery и OpenLayers и добился большого прогресса. Я столкнулся с небольшой проблемой.
У меня есть группы слоев в GeoServer, и я передаю их на страницу HTML, запустив API-интерфейс REST GeoServer (http: //: 8080 / geoserver / rest / workspaces / riskdatasuite / layergroups. json ), который возвращает список групп слоев в Geoserver. Затем я динамически создаю n флажки, соответствующие количеству групп слоев (идея заключается в том, что если я добавлю новую группу слоев, она сразу станет доступна как опция флажка на странице HTML). Это также добавляет это к карте немедленно. Это работает хорошо (используя код ниже):
$(document).ready(function () {
var inputs = [], i
var riskLayers = []
$.getJSON(_geoserverConfig.geoserver_url_layergroup, function (result) {
var lgArray = result.layerGroups.layerGroup
inputs.push('<ul class="layerlist_sort">');
$.each(lgArray, function (index, value) {
inputs.push('<li><input type="checkbox" id="' + index + '" name="' + value.name + '" checked>' + value.name + ' Flood</input></li>')
var riskLayer = new TileLayer({
source: new TileWMS({
url: _geoserverConfig.geoserver_url_wms,
params: { 'LAYERS': value.name, 'TILED': true, },
serverType: 'geoserver',
crossOrigin: null
})
});
riskLayers = riskLayer;
map.addLayer(riskLayer)
});
inputs.push('</ul>');
$('#layerList').append(inputs.join(''))
// map.addLayer(riskLayers)
});
});
Затем я настраиваю этот бит кода:
$(document).on('change', '[type=checkbox]', function() {
var layer = $(this).attr("name")
// this will contain a reference to the checkbox
if (this.checked) {
layer.setVisible(true);
} else {
// the checkbox is now no longer checked
layer.setVisible(false);
}
})
Таким образом, идея заключается в том, что значение name соответствует create TileLayer. Я пытаюсь связать флажок с созданным TileLayer, чтобы я мог установить видимость true / false ... но, очевидно, он не работает, и я сделал что-то не так. Флажки появляются и ставят галочку вкл / выкл, но он даже не выполняет
$("input[type='checkbox']").change(function ()
, так как даже если я добавлю windows.alert('Checkbox Test');
в функцию флажка, он не предупреждает меня.
Часть меня интересует, есть ли проблема с последовательностью, при которой чекбоксы создаются после того, как документ готов и происходит отключение. Я также уверен, что мое использование setVisible также не правильно. Я использую значение имени флажка, чтобы соответствовать фактическому TileLayer, что я уверен, что я делаю неправильно.
Любой совет будет с благодарностью! Ура, B