2014-01-14 3 views
2

AJAX 호출에서 반환 된 데이터를 기반으로 매 x 초 동안 Google지도의 마커를 업데이트하려고합니다. Ajax 함수는 x 초마다 호출되지만 마커는 표시되지 않습니다. 아래는 내가 작성한 자바 스크립트입니다. 누구든지 그 이유를 아나? 감사.매초마다 Google지도에서 마커 업데이트

<script type="text/javascript"> 
    var map 
    function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(1.32643, 103.79426), 
     zoom: 11 
    }; 
    map = new google.maps.Map(document.getElementById("map-canvas"), 
     mapOptions); 
    } 


    google.maps.event.addDomListener(window, 'load', initialize); 

     //Ajax call to get position 
    function set_center() { 
     var feedback = $.ajax({ 
      type: 'GET', 
      url: 'get_gps_position', 
      success: function (data) { 
      console.log(data); 
       if (data['gps_position_longitude'] != null && data['gps_position_latitude'] != null) { 
       var latlng = new google.maps.LatLng(data['gps_position_longitude'], data['gps_position_latitude']); 
       var marker = new google.maps.Marker({ 
       position: latlng, 
       map: map, 
       title:"Hello World!"}); 

       }; 


     }, 
     error: function(data) { 
      $("#result").html(data); 
      console.log(data) 
     } 
    }); 
    } 

    setInterval(set_center, 10000); 

</script> 

답변

2

요청이 예상대로 실행하고 올바른 JSON을 반환한다고 가정 :

var latlng = new google.maps.LatLng(data['gps_position_longitude'], data['gps_position_latitude']); 

google.maps.LatLng이 인수가 순서 latitude, longitude하지 longitude,latitude 될 것으로 기대하고있다.

추가 : 각 요청에 새 마커를 만드는 대신 단일 마커를 만들고 setPosition()을 사용하여 위치를 업데이트하는 것이 좋습니다.

또한 마커가 뷰포트 안에 표시되도록하려면지도의 중심을 latlng

0

자바 스크립트를 사용하여 새 마커의 위치가있는 메시지를 알리면 실제로 백그라운드에서 업데이트되는지 확인할 수 있습니다. 그것이 복용량이라면, 돔 등을 상쾌하게하는 것.