2012-01-26 2 views
1

Исходя из выбора пользователя из раскрывающегося списка, AJAX извлекает широту и долготу для местоположений, которые должны быть отмечены на карте маркерами, но я не могу получить маркеры для отображения. Ниже приведен код.Невозможно динамически отображать несколько маркеров Google Maps с использованием AJAX

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 функции

() который инициализирует карту Google, но если это проблема, я не смог объединить две функции, если вы это сделаете. Кроме того, я не знаю, что не работает. Заранее спасибо!

ответ

1
var locations = xmlhttp.responseText; 

Так location является строкой, то вам нужно разобрать JSON. Тогда все должно хорошо работать

... кроме marker.setMap(map);, это вне функции; и вам это не нужно, так как вы устанавливаете карту в параметрах маркера.

+0

Я идиот, я знал, что теперь он работает. Спасибо! – scrolls

Смежные вопросы