Javascript 通过Ajax加载的Google地图标记未显示

Javascript 通过Ajax加载的Google地图标记未显示,javascript,ajax,google-maps,google-maps-api-3,Javascript,Ajax,Google Maps,Google Maps Api 3,我的谷歌地图显示正确,地图居中也像一个魅力。但是当我想添加一些标记(只是标记,不想重新加载整个地图)时,什么都不会发生(地图上没有可见的标记) 我的脚本如下所示: function g_maps(){ var map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: new google.maps.LatLng(48.2136522, 16.386172),

我的谷歌地图显示正确,地图居中也像一个魅力。但是当我想添加一些标记(只是标记,不想重新加载整个地图)时,什么都不会发生(地图上没有可见的标记)

我的脚本如下所示:

function g_maps(){
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: new google.maps.LatLng(48.2136522, 16.386172),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var infowindow = new google.maps.InfoWindow();
}

function g_maps_marker(coordinates){
        var locations = [ coordinates ];
        var marker, i;

        for (i = 0; i < locations.length; i++) {  
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            map: map,
            visible: true
          });

          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);
            }
          })(marker, i));
        }
}
坐标的输出如下所示:

['abc', 48.1857442, 48.1857442, 0], ['xyz', 48.2136522, 48.2136522, 1]
函数
g\u maps
document.ready()
事件中调用


我正在使用API v3。

您正在切片
coordinates=coordinates.slice(0,-2)
然后再次用坐标做一个数组,像这样
var locations=[coordinates]

我有点困惑<代码>切片
已经为您提供了一个数组,那么为什么还要再次创建数组呢?你确定你的循环被执行了吗

也许您应该删除
var locations=[coordinates]
g\u映射\u标记中,然后重试。我希望它能起作用

**编辑**

在进一步分析代码之后,我发现您尝试使用看起来像数组的字符串,然后尝试循环使用它。这是行不通的

比如说

a = "[1, 2, 3]"; b = [a]; b[0][0]; // => will result in [ and not in your desired element i = 1; coordinates = []; for(var i in data.results) { $('#content_table').append("blablabla"); var coordinate = []; coordinate.push(data.results[i].title); coordinate.push(data.results[i].lat); coordinate.push(data.results[i].lon); coordinates.push(coordinate); }; a=“[1,2,3]”; b=[a]; b[0][0];//=>将导致[而不是您想要的元素

您应该使用以下代码为坐标创建数组对象

a = "[1, 2, 3]"; b = [a]; b[0][0]; // => will result in [ and not in your desired element i = 1; coordinates = []; for(var i in data.results) { $('#content_table').append("blablabla"); var coordinate = []; coordinate.push(data.results[i].title); coordinate.push(data.results[i].lat); coordinate.push(data.results[i].lon); coordinates.push(coordinate); }; i=1; 坐标=[]; for(data.results中的var i) { $('content_table')。追加(“blablabla”); var坐标=[]; coordinate.push(data.results[i].title); 坐标推送(data.results[i].lat); coordinate.push(data.results[i].lon); 坐标。推(坐标); };


另外,在创建坐标数组时,您似乎忘记了使用
经度
,并使用了
纬度
两次。我已在代码中修复了此问题。

我对坐标输出进行切片,因为我想去掉最后的to字符->“,”是的,很好。但是
slice
总是返回一个数组,所以不需要
var locations=[坐标]
。它将在另一个数组中生成一个没有意义的数组,对吗?:-)好的,我将行更改为
var locations=coordinates;
但没有任何更改:/Hmmmmm。请!在
g\u maps\u marker
函数中共享您在
坐标
数组中得到的内容。正是这个输出
['Item1',48.1857442,48.1857442,0],'Item2',48.21365248.2136521]