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]