2016-07-16 5 views
1

사용자가 특정 HTML 요소를 클릭 할 때마다 Bing Map을 표시하려고했지만, timeInterval을 설정 한 후에도 Microsoft.Maps.Map은 항상 undefined를 반환하고, 다음과 함께 새 스크립트를 삽입하려고 시도했습니다. onscriptload onclick 이벤트. 다음은 샘플 코드입니다.Map은 항상 정의되지 않음을 반환합니다.

$(document).ready(function(){ 

    var script = document.createElement("script"); 
     script.type = 'text/javascript'; 
     script.src = 'https://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&onscriptload=getMap'; 

     document.head.appendChild(script); 

}) 


$("#showMap").click(function(){ 
getMap(); 

}) 
function getMap(){ 
console.info(Microsoft.Maps.Map); 
    var time = ""; 
    var map 
    var mapControl = Microsoft.Maps.Map; 
     if(mapControl == undefined){ 
      time = setInterval(function(){ getMap() }, 8000); 
     } 
     else{ 
      map = new Microsoft.Maps.Map(document.getElementById('address1_composite'), {credentials: 'Cred'}); 
      clearInterval(time); 
     }  
} 

죄송합니다 나는이 질문에 이미이 링크를 여기에 요청 알고

Bing map is undefined after loading Javascript file 우리는 같은 시나리오를 가지고 있지만 내 내가 제안 된 대답을 시도하지만 예상대로 작동하지 않습니다.

+0

어디 당신이 당신의 코드를 테스트 했습니까? 하나는 jsfiddle 같은 사이트, localhost는 ...? 콘솔에 표시되는 오류 메시지는 무엇입니까? –

+0

crm에 연결되어 있기 때문에 콘솔을 통해서만 테스트하고 있습니다. Microsoft.Maps.Map은 정의되지 않았습니다. – user3197077

+0

그러면 브라우저의 네트워크 탭을 확인해야합니다. 나는 스크립트의 로딩이 어떤 이유로 블럭이라고 확신한다. –

답변

0

요소를 클릭 할 때지도를 만드는 대신 수행해야 할 작업은지도를 한 번로드 한 다음 버튼을 클릭하면 숨기거나 표시하는 것입니다. 이렇게하면지도로드 수가 크게 줄어들어 거래 발생량이 적어 비용이 절감됩니다.

또한, 대신 빙지도 V8 제어를 사용하여 비동기 적으로로드하는 당신 같은 요구에지도 스크립트를로드의 : https://msdn.microsoft.com/en-us/library/mt712557.aspx

관련 문제