2014-03-25 17 views
0

我正在搜索在我的主頁中顯示谷歌地圖。此地圖由此功能生成:通過php文件使用ajax拍攝谷歌地圖

function addressCode(id,concatenadoAMostrarEnMapa) { 
       var geocoder; 
       var map; 
        geocoder = new google.maps.Geocoder(); 
        var latlng = new google.maps.LatLng(-35.397, -60.644); 
        var mapOptions = { 
         zoom: 5, 
         center: latlng 
        } 
        map = new google.maps.Map(document.getElementById(id), mapOptions); 

        var address = concatenadoAMostrarEnMapa; 
        geocoder.geocode({ 
         'address': address}, function(results, status) { 
         if (status == google.maps.GeocoderStatus.OK) { 
          map.setCenter(results[0].geometry.location); 
          var marker = new google.maps.Marker({ 
           map: map, 
           position: results[0].geometry.location 
          }); 
         } else { 
          alert('Geocode was not successful for the following reason: ' + status); 
         } 
        }); 
        google.maps.event.addDomListener(window, 'load',addressCode); 
       } 

此功能在主頁面中定義。然後用ajax,我稱之爲PHP文件take_publications,在這個文件我打印下面的代碼:

$comillas='"' ; 
    echo " <div id='$mapa'"; 
    echo "onload='addressCode('$mapa','$concatenadoAMostrarEnMapa')' style='position:relative; width:400px; height:400px;'> </div>"; 
    echo "<script >addressCode('$mapa','$concatenadoAMostrarEnMapa');"; 
    echo "setInterval("; 
    echo $comillas."addressCode('$mapa','$concatenadoAMostrarEnMapa')".$comillas; 
    echo ", 10000); 
     </script >"; 

$mapa與標籤的id一個字符串,這個變量的函數addressCode作爲論據。 $concatenadoAMostrarEnMapa是在函數addressCode中用作參數的地址。

問題是地圖沒有加載,或者說,由ajax從php文件打印的腳本沒有被執行。

任何想法發生了什麼?

在此先感謝!

回答

0

首先,div元素沒有onload事件。

如果你真要上載執行腳本,添加您的電話addressCodewindow.onload事件處理程序,如下所示:

window.onload = function(){ 
    //do anything here 
}; 

接着,關於使用setInterval,如果你不需要IE < 10用戶看到你的網站,你可以這樣做:

setInterval(addressCode, 1000, "#yourmap", "nohablospanishenoughtounderstandthat"); 

否則,你應該做的:

setInterval(function(){ addressCode("#yourmap","blabla"); }, 1000); 

(請注意,我不支持使用setInterval,你最好使用setTimeout

最後,停止使用register_globals的幫手。它永遠不會幫助你。就像從來沒有。

"<div id='$mapa'" 

應該是:

"div id='".$mapa."'" 

所以畢竟,你的代碼應該是這樣的:

echo "<div id='".$mapa."'"; 
echo "style='position:relative; width:400px; height:400px;'></div>"; 
echo "<script>"; 
echo "window.onload = function(){ "; 
echo "addressCode('".$mapa."','".$concatenadoAMostrarEnMapa."');"; 
echo "setInterval("; 
echo "addressCode, 1000, '".$mapa."','".$concatenadoAMostrarEnMapa."'"; 
echo ");"; 
echo "};"; 
echo "</script >"; 
+0

感謝您的解釋!我將應用它,我是網頁開發新手。 我試圖使用你的代碼,但它不worl:/ –

0

我沒有確切的答案,但你可以使用此代碼烏拉圭回合網站..

所有的
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script> 
function initialize() { 
var map_canvas = document.getElementById('map_canvas'); 
var map_options = { 
      center: new google.maps.LatLng(24.376202, 92.163641), 
      zoom: 18, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 
var map = new google.maps.Map(map_canvas, map_options) 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

<div id="map_canvas"></div> 
+0

根據你的選擇改變經度和緯度 – user2991245

+0

如果你只有一張地圖可以顯示,那麼這段代碼很有用,但是我有一張要顯示的地圖列表。 –

+0

我有一個疑問 - 每次通話都會有差異或相同的經歷? – user2991245

0

後一直在尋找了一整夜,我找到了解決辦法。我必須評估ajax帶來的所有垃圾郵件,因爲我插入了新垃圾郵件,但該頁面已經加載了所有內容。

謝謝!