2012-01-26 60 views
1

根據用戶從下拉菜單中選擇的內容,AJAX會檢索應該使用標記在地圖上標記的位置的緯度和經度,但我無法獲取要顯示的標記。以下是代碼。無法使用AJAX動態顯示多個Google地圖標記

function selectRoute() { 
     var route = $("select option:selected").val(); 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else { 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function() { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
       var locations = xmlhttp.responseText; 
       var marker, i; 
       for (i = 0; i < locations.length; i++) { 
        marker = new google.maps.Marker({ 
         position: new google.maps.LatLng(locations[i][0], locations[i][1]), 
         map: map 
        }); 
       } 
      } 
     } 
     marker.setMap(map); 
     xmlhttp.open("GET","../lib/markers.php?route="+route,true); 
     xmlhttp.send(); 
    } 

這裏是responseText的樣子是從markers.php頁面檢索:

[[38.018914, -121.945154], [38.003275, -122.024597], [37.973737, -122.029095], and on and on]; 

我唯一的想法是,這個問題是這樣的代碼是不是在initialize()函數初始化谷歌地圖,但如果這是問題,我還沒有能夠結合這兩個功能,如果你願意。除此之外,我無能爲力。提前致謝!

回答

1
var locations = xmlhttp.responseText; 

所以location是一個字符串,你需要解析JSON。那麼一切都應該很好地工作

...除了marker.setMap(map);,它是在功能外;而且您不需要它,因此您可以在標記選項中設置地圖。

+0

我是個白癡,我知道,現在就開始工作。謝謝! – scrolls