2013-10-09 7 views
0

자바 스크립트에서 타이머를 사용하여 cshtml의 다른 객체에서 매 5 초마다 특정 데이터를 폴링하고 자바 스크립트의 함수로 업데이트하려고합니다. 내가 변수는 글로벌하게 원하는대로자바 스크립트에서 함수가 정의되지 않았습니다.

내가 다음 코드를 살펴 보았다하지만 초기화의 오류를 던질 것으로 보인다는

function initialize() { 

    var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 


} 

$(document).ready(function() { 
    initialize(); 
}); 
window.setInterval(function() { 
    /// call your function here 
    initialize(); 
}, 5000); 

그러나,이

function initialize() { 

    var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 


} 

$(document).ready(function() { 
    initialize(); 
}); 

완벽하게 잘 작동 정의되지 내가 매 5 초마다지도에서 초점을 업데이트 할 수 있도록 전역 변수로 만들려고했습니다.

var mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

그러나 스크립트가 계속해서 Google에 오류가 발생하는 것 같아 보이지 않습니다.

어쨌든 제가 문제를 해결할 수 있습니까?

예를 들어 5 초마다 새로운 google.maps.LatLng (51.508742, -0.120850)의 매개 변수를 업데이트하고 싶습니다.

+0

다음은 * * 전역 변수, 그것은 그 기능 범위 것 아니다. –

+0

var에 전역 변수가 없습니다 - 전역 변수는 ** var **이 없거나 명시 적으로 window 속성 =>'window.myVariable = "something";으로 입력됩니다 ** –

+3

스크립트를 포함 시켰습니까? –

답변

1
여기

작업 코드는,

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false"> 
     </script> 
     <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script> 
     <script> 
      var mapProp; 
      $(document).ready(function(){initialize();}) 
      function initialize() 
      { 
       mapProp = changeMapProp(); 
       var map=new google.maps.Map(document.getElementById("googleMap") 
       ,mapProp); 
      } 
      function changeMapProp() { 
       mapProp = { 
        center:new google.maps.LatLng(52.508742,-0.120850), 
        zoom:5, 
        mapTypeId:google.maps.MapTypeId.ROADMAP 
       }; 
       return mapProp; 
      } 
      window.setInterval(function() { 
       /// call your function here 
       initialize(); 
      }, 5000); 

     </script> 
    </head> 

    <body> 
     <div id="googleMap" style="width:500px;height:380px;"></div> 

    </body> 
</html> 
1

시도 :

var mapProp; 
var map; 

var initialize = function() { 

    mapProp = { 
     center: new google.maps.LatLng(51.508742, -0.120850), 
     zoom: parseInt(5), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("googleMap") 
     , mapProp); 

} 

$(document).ready(function() { 

    setTimeout(initialize, 5000); 

}); 
+0

디버거가 window.setinterval 함수에서 초기화시 오류를 표시합니다. – aceminer

+0

이제 답을 시도해 볼 수 있습니다. – Salim

1

당신은 (당신이 정의되지 않은 구글받을 이유입니다) var mapProp 글로벌는 center: new google.maps... 바로 실행됩니다, 그리고 google 변수가 아직 자리에 수 없기 때문에 할 수 없습니다.

정의되지 않은 초기화에 대해서는 함수 안에 setInterval을 넣으십시오. 당신이 함수 내부의`var` 키워드를 사용하는 경우

관련 문제