2012-01-25 7 views
1

jQuery를 사용하여 사용자가 입력 요소를 선택하는 레이어 whe에 대해 OpenLayers에서 가시성을 설정하려고합니다.jQuery로 openlayers 함수를 호출합니다.

<ul> 
    <li class="ls_sivi"> <input type="checkbox" value="1" style="width:auto"><label>stars</label></li> 
    <li class="ls_sivi"><input type="checkbox" value="2" style="width:auto"><label>home</label></li> 
</ul>` 

그리고 jQuery를보다 : 내가 얻을

$(document).ready(function(){ 
var sloj = new Array(); 
sloj[1]=stars; 
sloj[2]=home; 

$('.ls_sivi input[type="checkbox"]').change(function(){ 
    var vri = $(this).val(); 

    if($(this).is(":checked")){ 
     sloj[vri].setVisibility(true); 
     return 
     } 
     sloj[vri].setVisibility(false); 
    }); 
    }); 

stars = new OpenLayers.Layer.Vector("stars", { 
    strategies: [new OpenLayers.Strategy.Fixed()], 
    protocol: new OpenLayers.Protocol.HTTP({ 
     url: "textfile.txt", 
     format: new OpenLayers.Format.Text() 
    }) 
}); 

home = new OpenLayers.Layer.Vector("home", { 
    strategies: [new OpenLayers.Strategy.Fixed()], 
    protocol: new OpenLayers.Protocol.HTTP({ 
     url: "textfile1.txt", 
     format: new OpenLayers.Format.Text() 
    }) 
}); 
map.addLayers([stars, home]); 

여성용는 HTML 코드의 일부는 다음과 같습니다

레이어가 정의 코드의 일부이다 :

"sloj [vri] .setVisibility"는 함수가 아닙니다.

더 많은 레이어가 있고 가장 쉬운 방법 일 수 있으므로 어떻게이 문제를 해결할 수 있습니까?

+0

나는 당신이 당신의 체크 박스 참조를 다시 한 번 확인한다고 생각합니다. 나는 그것이 함수가 아니라고 말하는 이유는 vri이 당신이 생각하는 것이 아니기 때문이라고 생각합니다. –

+0

당신 말이 맞지만 vri을 내가 얻은 숫자로 바꾸십시오. 'sloj [2]'를 객체 – user971146

+1

으로 변환 할 수 없습니다 ... 감사합니다. – user971146

답변

2

사용 :

map.getLayer(sloj[vri].id).setVisibility(); 
관련 문제