Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Maps使用jquery从ajax添加标记_Javascript_Jquery_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript Google Maps使用jquery从ajax添加标记

Javascript Google Maps使用jquery从ajax添加标记,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我正在尝试将谷歌地图添加到我的网页中,该网页具有指定宽度的雷达id的div。我使用jqueryajax方法从第二个页面获取坐标,并使用Marker将它们绘制在地图上。但仅显示最后一个标记,不显示其他标记 var global = new Array(); $(document).ready(function () { console.log("ready!"); if ($("#StartingDate").val() != ""

我正在尝试将谷歌地图添加到我的网页中,该网页具有指定宽度的雷达id的div。我使用jqueryajax方法从第二个页面获取坐标,并使用Marker将它们绘制在地图上。但仅显示最后一个标记,不显示其他标记

var global = new Array();
        $(document).ready(function () {

            console.log("ready!");
            if ($("#StartingDate").val() != "") {
                var start = $("#StartingDate").val();
                var end = $("#EndingDate").val();
                var id = $("#UserId").val();

                $.ajax({
                    url: "GetData.aspx?StartingDate=" + start + "&EndingDate=" + end + "&UserId=" + id, async: false, success: function (result) {
                        var resp = result.split(",");
                        for (x = 0; x < resp.length - 1; x++) {
                            var cor = resp[x].split(";");
                            var lat = cor[0];
                            var lon = cor[1];
                            var date = cor[2]
                            var temp = [lat, lon, date];
                            global.push(temp);
                        }
                    }
                });
            }


        });
        $(document).ajaxComplete(function () {

            var myLatlng = new google.maps.LatLng(-25.363882, 131.044922);
            var mapOptions = {
                zoom: 4,
                center: myLatlng
            }
            var map = new google.maps.Map(document.getElementById("radar"), mapOptions);
            for (var i = 0; i < global.length; i++) {
                console.log(global[i]);
                var marker =  new google.maps.Marker({
                    position: new google.maps.LatLng(parseFloat(global[i][0]),parseFloat(global[i][1])),
                    title: global[i][2]
                });

                marker.setMap(map);
            }

        });

Edit:事实证明,在发出
ajax
请求之前,您必须设置
.ajaxComplete
处理程序,因为您已将
async
设置为
false
。 这是一个有效的例子

如果您打算稍后使用标记(即:移动或删除标记),我建议将标记保存在数组中

仅显示最后一个标记,因为您每次都会覆盖它。您需要做的是将标记保存在数组中

我要做的是创建一个函数
addMarker
,它用给定的坐标和标题创建一个标记并返回它。 这看起来像这样:

global = [
 [
   0: "33.622835",
   1: "73.062932",
   2: "16/06/2015 1:17:24 AM"
 ],....
]; 
function addMarker(title, x, y, map){
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(x,y),
        map: map,
        title: title
    });

    return marker;
}
如果当前正在for循环中设置标记,则应调用此函数:

for (var i = 0; i < global.length; i++) {
    console.log(global[i]);
    markerArray[i] = addMarker(global[i][2], global[i][0], global[i][1], map);
}
for(变量i=0;i

markerArray
需要像
global

一样是一个全局数组。虽然将标记放入数组是一个好主意,但您不必这样做,也不必解释为什么要这样做。除此之外,这不会改变所描述的问题。@MrUpsidown将标记放在数组中会有帮助,因为每次执行for循环时,您都会创建多个标记,而不是覆盖它。因为OP在他的代码中有一个for循环,所以我认为它之所以有帮助并不重要。是的,它应该解决这个问题。我使用了我为某个应用发布的代码,它对我起了作用。不,它不起作用。仍然显示一个marker@Timo不,这不能解决问题。在for循环中创建
var标记
不是这里的问题。顺便说一句,这正是你的函数所做的。唯一的区别是代码被包装在一个函数中,并且将创建的标记放在一个数组中。没别的。我的错,我应该在发布答案之前测试代码。结果表明它不起作用,因为
async
设置为
false
,并且
.ajaxComplete
处理程序是在
ajax
请求完成后创建的。是一个工作示例在for循环中返回?另一件事:为什么要在ajaxComplete上创建地图?您以前是否尝试过创建地图(例如在document ready中)?