2013-11-01 174 views
-1

有人可以帮助我吗?我试图实现一个包含我的气象站数据的地图。 我想使用谷歌地图,才能有一个很好的观点,但我不明白为什么我的代码加载正确的标志,但不更新它们:setTimeout更新谷歌地图v3标记

function initialize() { 
     var mapOptions = { 
      zoom: 8, 
      maxZoom: 12, 
      minZoom: 4, 
      streetViewControl: false, 
      center: new google.maps.LatLng(37.5, 14), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById('map-canvas'), 
      mapOptions); 
    } 

    function loadMarker() { 
     <?php 
      $query3 = mysql_query("SELECT id,coordinate FROM stazioni WHERE visibilemappa = 1",$conn); 
      while($riga_c=mysql_fetch_array($query3)) { 
       if ($riga_c['coordinate']!="") { 
        echo "var my".$riga_c['id']." = new google.maps.LatLng(".$riga_c['coordinate']."); 
           "; 
       } 
      } 

      $query3 = mysql_query("SELECT * FROM stazioni WHERE visibilemappa = 1",$conn); 
      while($riga_c=mysql_fetch_array($query3)) { 
       if ($riga_c['coordinate']!="") echo "var marker".$riga_c['id']." = new google.maps.Marker({ 
          position: my".$riga_c['id'].", 
          map: map, 
         icon: 'genera_scritta.php?testo=".str_replace("<br>"," - ",$riga_c['temperatura'])."', 
          title: '".str_replace("<br>"," - ",$riga_c['localita'])." ".date('l jS \of F Y h:i:s A')."' 
         }); 
         "; 

      } 
     ?> 
    } 

    setTimeout(function() { loadMarker(); }, 3000); 
    google.maps.event.addDomListener(window, 'load', initialize); 
    google.maps.event.addDomListener(window, 'load', loadMarker); 

我使用Chrome。谢谢!

+0

难道你不需要使用'setInterval'而不是'setTimeout'吗? – AfromanJ

+0

在互联网上,我有时会阅读setInterval和其他时间来使用setTimeout。 老实说,我有点困惑...... – user2821178

+0

所以你有两个'loadMarker'调用,你应该只需要一个。 – duncan

回答

0

1)您有一个可变范围问题。您正在使用php在一个函数内输出var,而这个函数不会被其他函数看到。

2)在一个侧面说明,我会说这是一个更好的做法,使用ajax来获取id的,而不是嵌入php查询。这样,你可以做错误处理。

+0

uhm,我读了很多示例如何刷新标记,并且我发现了一些使用ajax和其他的没有。我试图避免ajax,因为我不知道它! – user2821178

0

你运行本质上是两个非常相似的查询,并遍历每一个。相反,你可以通过一个查询和一个循环来实现所有你想要的。例如:

function loadMarker() { 
    <?php 
     $query3 = mysql_query("SELECT id,coordinate,temperatura FROM stazioni WHERE visibilemappa = 1",$conn); 
     while($riga_c=mysql_fetch_array($query3)) { 
      if ($riga_c['coordinate']!="") { 
       echo "var marker".$riga_c['id']." = new google.maps.Marker({ 
          position: new google.maps.LatLng(".$riga_c['coordinate']."), 
          map: map, 
          icon: 'genera_scritta.php?testo=".str_replace("<br>"," - ",$riga_c['temperatura'])."', 
          title: '".str_replace("<br>"," - ",$riga_c['localita'])." ".date('l jS \of F Y h:i:s A')."' 
         }); 
        "; 
       } 
      } 
     ?> 
} 
+0

绝对正确,感谢您的优化 – user2821178