2013-11-01 218 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