可以't使用AJAX动态显示多个谷歌地图标记

Can't dynamically display multiple Google Maps markers using AJAX

本文关键字:谷歌 地图 图标 动态显示 AJAX 使用 可以      更新时间:2023-09-26

根据用户从下拉菜单中的选择,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();
    }

以下是从markers.php页面检索到的responseText的样子:

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

我唯一的想法是,问题是这段代码不在初始化谷歌地图的initialize()函数中,但如果这是问题所在,我还无法将这两个函数组合起来。除此之外,我不知道什么是无效的。提前感谢!

 var locations = xmlhttp.responseText;

所以location是一个字符串,您需要解析JSON。然后一切都应该很好

除了marker.setMap(map);,它在函数之外;而且你根本不需要它,因为你在标记选项中设置了贴图。