Кнопка для слоев всегда в активном состоянии, легенда сохраняется для 1-го слоя при добавлении 2-х слоев
У меня проблема с mapbox и tilemill:
Проверьте мой код здесь: http://bl.ocks.org/marishaf/3cc9bfbeb412c1120e93
Кнопки слоев ВСЕГДА выглядят, как будто они находятся в "активном" режиме, хотя они все еще загружают и выгружают слои.
Легенды загружаются для каждого слоя (легенды существуют для слоев Public Land и Zoning), но если вы загрузите оба, а затем попытаетесь удалить оба слоя, легенда останется для первого загруженного слоя.
Легенда сохраняется и с подсказками. Например, если сначала загрузить слой с легендой (это происходит только в том случае, если слои загружены в этом порядке), а затем слой с всплывающими подсказками (например, "Загрязнение источника") и навести курсор мыши на точку, чтобы вызвать всплывающую подсказку, а затем попробуйте удалить слой с легендой, легенда сохраняется.
1 ответ
- Удалить "link.className = 'active';" до функции onclick.
- Измените выражение "if (map.hasLayer(layer))", чтобы оно больше походило на выражение "else" ("layer" вместо "thelayer" и только одно "className" изменение).
Snippet:
link.href = '#';
// remove line that was here
link.innerHTML = name;
link.onclick = function(e) {
e.preventDefault();
e.stopPropagation();
if (map.hasLayer(layer)) {
map.removeLayer(layer);
map.removeLayer(gridlayer);
// you had "thelayer", but it should be "layer":
map.legendControl.removeLegend(layer.getTileJSON().legend);
// change two lines that were here to the following:
this.className = '';
} else {
map.addLayer(layer);
map.addLayer(gridlayer);
this.className = 'active';
map.legendControl.addLegend(layer.getTileJSON().legend);
}
thelayer = layer;
};
Извините за грязное объяснение, но вы задавали два вопроса одновременно, и я думаю, что это самый чистый способ ответить.