2012-01-26 14 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]; 

私の唯一の思想は、問題は、このコードは、初期化()関数ではありませんされていることですそれはGoogleマップを初期化しますが、それが問題なのであれば私は2つの機能を組み合わせることができませんでした。それ以外は私にはうまくいかない。前もって感謝します!

答えて

1
var locations = xmlhttp.responseText; 

だからlocationが文字列である、あなたはJSONを解析する必要があります。それではすべてがうまくいくはずです

... marker.setMap(map);を除き、それは関数の外です。とにかくマーカーオプションでマップを設定する必要はありません。

+0

私はばかだ、私はそれを知っていた、今働いている。ありがとうございました! – scrolls

関連する問題