Не удается динамически отображать несколько маркеров Google Maps с помощью AJAX - PullRequest
1 голос
/ 27 января 2012

На основе выбора пользователя из выпадающего списка 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 Map, но если это проблема, я не смог объединить две функции, если хотите.Помимо этого я не знаю, что не работает.Заранее спасибо!

1 Ответ

1 голос
/ 27 января 2012
 var locations = xmlhttp.responseText;

Итак, location - это строка, вам нужно проанализировать JSON. Тогда все должно работать довольно хорошо

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...