2014-01-14 35 views
2

我试图根据从AJAX调用返回的数据每更新x秒在Google地图上更新标记。每x秒调用一次Ajax函数,但不显示标记。以下是我写的JavaScript。任何人都知道原因?谢谢。每隔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

尝试使用JavaScript警告带有新标记位置的消息,看它是否真的在后台更新。如果它的剂量,那么它与刷新dom什么的。