setTimeout更新谷歌地图v3标记

时间:2013-11-01 16:47:50

标签: javascript html google-maps google-maps-api-3

有人可以帮助我吗?我正在尝试实现一个包含我的气象站数据的地图。 我希望使用谷歌地图以获得良好的视图,但我无法理解为什么我的代码正确加载标记但不更新它们:

    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。谢谢你!

2 个答案:

答案 0 :(得分:0)

1)您有可变范围问题。您正在使用php在一个函数中输出var,而另一个函数将看不到它。

2)在旁注中,我会说使用ajax获取id是更好的做法,而不是嵌入php查询。这样,您就可以进行错误处理。

答案 1 :(得分: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')."'
                        });
                  ";
              }
          }
      ?>
}