2010-04-11 5 views
1
여기

문제입니다 :JQuery와 Google지도 문제

는 요청에 따라 Google지도를로드하고 숨기는 JQuery와 토글 버튼을 말할 수 있습니다 그 이후 전환시 : 다음

$('#showmeMap').toggle(function() 
{ 
    var map = new GMap2($("#map").get(0)); 
    var mapCenter = new GLatLng(-2, 20); 
    map.setCenter(mapCenter, 12); 
    $('#map').show(); 
} 
}, function() { 
$('#map').hide(); 
}); 

내가 어떤 임의의 마커를 추가하고 나중에지도에서 마커를 제거하는 다른 기능 :

버튼을 클릭 할 때 오류가 발생했습니다.지도는 정의되지 않았습니다. 내 생각으로는 Google지도 객체를 전 세계적으로 정의하고있었습니다 :

map = new GMap2($("#map").get(0)); 

그러나 완벽하게 작동하는지도는 인터넷 탐색기에로드되지 않습니다 !!

제안 사항? 대답

답변

2

하나 당신은 폐쇄를 통해 map를 얻을 수 있도록 (당신이이에 document.ready 일을해야하기 때문에 이미 어쨌든해야한다) 기능 모두를 포장 :

$(function() 
{ 
    var map; 
    $('#showmeMap').toggle(function() 
    { 
     map = new GMap2($("#map").get(0)); 
     // ... 
    }); 

    $('#destroyMarkersButton').click(function() { 
     // ... 
    }); 
}); 

또는, 당신은 종류의 네임 스페이스를 정의 할 수 있습니다 (일반적으로이 같은 직접 그것을 않습니다 이것에 대한 라이브러리 재귀보다는이) 그런 다음

if (window.myApp === undefined) 
    window.myApp = {}; 
var appNS = window.myApp; 

를 안심이 네임 스페이스를 사용할 수는거야 이 window에 직접 묶여 있기 때문에, 전체 페이지를 통해 보유 : 등등

$('#showmeMap').toggle(function() 
{ 
    appNS.map = new GMap2($("#map").get(0)); 
    // ... 
}); 

하고 있습니다.

0

좋아, 질문 ..는 IE에서 변수의 이름으로 아이디 충돌 ... 롤이

그냥 #mapContainer

에 ID를 변경할 것으로 보인다 문제가 해결

,

+0

이것을 허용 된 대답으로 표시하는 것을 잊지 마세요. – Anurag