Ik ben bezig met het opzetten van een webapplicatie gebaseerd op leafletjs. Als onderdeel daarvan wil ik een eigen layer control maken om lagen aan en uit te kunnen zetten.
Een laag kan ik aanzetten via map.addLayer(layer). Dus de laag 'restaurants' kan ik aanzetten via map.addLayer(restaurants).
Nu wil de de naam van laag doorgeven in de data attribute van een link, echter heb ik dus eigenlijk de variable zelf nodig en niet de naam als string.
Nu heb ik dat opgelost door gebruik te maken van window[], maar ik vraag me af of er nog een andere/betere oplossing mogelijk is.
En omdat een voorbeeld meer zegt dan woorden, een uitgekleed voorbeeld: http://jsfiddle.net/fwLdbf3c/1/
Een laag kan ik aanzetten via map.addLayer(layer). Dus de laag 'restaurants' kan ik aanzetten via map.addLayer(restaurants).
Nu wil de de naam van laag doorgeven in de data attribute van een link, echter heb ik dus eigenlijk de variable zelf nodig en niet de naam als string.
Nu heb ik dat opgelost door gebruik te maken van window[], maar ik vraag me af of er nog een andere/betere oplossing mogelijk is.
HTML:
1
2
3
| <a data-layer="restaurants" href="#">restaurants</a> <a data-layer="sport" href="#">sport</a> <a data-layer="sights" href="#">sights</a> |
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $("a").click(function(event) { event.preventDefault(); id = $(this).data("layer"); //dit is dan 'restaurants', 'sport' of 'sights' if(map.hasLayer(window[id])) { $(this).removeClass('selected'); map.removeLayer(window[id]); //dit is dan 'restaurants', 'sport' of 'sights' } else { map.addLayer(window[id]); $(this).addClass('selected'); } }); |
En omdat een voorbeeld meer zegt dan woorden, een uitgekleed voorbeeld: http://jsfiddle.net/fwLdbf3c/1/