2013-08-29 6 views
11

저는 리플릿 API를 사용하여 javascript에서 기본 geoJson 프로그램을 보유하고 있습니다.리플렛에서 자바 스크립트 맵 새로 고침하는 방법

<html> 
<head> 

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" /> 
<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script> 
<script src="india.js" type="text/javascript"></script> 

</head> 


<body> 
<div id = "map1" style="width: 1100px; height: 400px"> </div> 

<script> 

var area = L.map('map1', {center: [27.8800,78.0800], zoom: 4 }); 

L.tileLayer('http://a.tiles.mapbox.com/v3/raj333.map-gugr5h08/{z}/{x}/{y}.png').addTo(area); 

var indiaLayer= L.geoJson(india, {style: {weight: 2, 
     opacity: 1, 
     color: 'white', 
     dashArray: '3', 
     fillOpacity: 0.1}}); 

     area.addLayer(indiaLayer); 

     function clicked(){ 

     this.options.style.fillOpacity = 0.8; 
      //how to refresh layer in the given map 

     } 

     indiaLayer.on('click', clicked);     
</script> 
</body> 
</html> 

문제는 어떻게지도의 레이어 내용을 자동으로 새로 고칩니다.

여기

   function clicked(){ 

     indiaLayer.style.fillOpacity = 0.8; 
      //how to refresh layer in the given map 

     } 

     indiaLayer.on('click', clicked); 

예를 때 사용자 indiaLayer의 fillOpacity 변수의 변화에 ​​클릭하지만 다시 내가지도를 새로 고침하고 있지 않다 때문에 이해된다지도에 반영되지 않습니다. 나는 그것을하는 방법을 모른다.

P/S 도와주세요 : 이러한 indiaLayer 객체에서 사용할 수있는 기능 (즉 클릭 기능 ...이 목적을 위해 사용하거나 하나도 존재하지 않는 하나의 내부 객체)

당신이 할 수있는 Leaflef documentation에있는 GEOJson에서 사용할 수있는 메소드 목록을 확인하십시오.이 예제에서 사용 가능한 가장 근접한 v.0.7.7에 대한 링크입니다.

답변

17

마지막으로 나는

map._onResize(); 

를 사용했습니다 그리고 내가지도를 새로 고침 도움이됩니다. 어쩌면 조금 해킹 할 수도 있지만 작동합니다. 코드에서

는 area._onResize()입니다

PS : 어쩌면 당신은 새 불투명도 값을 설정하는 방법을 변경하려고한다 - 변경하려고 그

function clicked(){ 
    this.setStyle({fillOpacity: 0.2}); 
} 
+1

가 :( – user609306

+0

그냥 내 대답을 수정 내가 그것을 이봐 @elephant ..yes this.setStyle ( – Elephant

+0

도움이되기를 바랍니다 {fillOpacity을 : 0.2}) 작품 ....... Spacibo – user609306

15

function clicked(){ 
    this.options.style.fillOpacity = 0.8; 
} 

map.invalidateSize(); 

map._onResize() - 해킹이며 이후 버전에서는 제거되지 않을 것이라고 보장 할 수 없습니다. .

이 work..nothing이 코드에서 매핑 발생하지 않습니다
+3

지도의 크기가 변경되지 않으면 실제로 invalidateSize가 작동하지 않습니다.문서에서 : "지도 컨테이너 크기가 변경되었는지 확인하고지도가 업데이트 된 경우 확인합니다." – a1an

+0

내 문제는 다음과 같습니다. 내지도가 처음에 숨겨져 있었고 표시 할 때 초기화되지 않았습니다 (일부 타일은 초기화되지 않았습니다). 짐을 실은). 이 메서드 호출을 추가 한 후에이 문제가 해결되었습니다. 어쨌든 업데이트를한다고 생각합니다. –

0

area.fitBounds(area.getBounds());

+0

오페라 질문 "문제는 어떻게하면지도의 레이어 내용을 자동으로 새로 고칩니다. 여기에 – justDev7a3

+3

@ImportanceOfBeingErnest 검토하기 전에 질문과 대답을 읽으십시오. –

관련 문제