Javascript 如何颠倒标记相互重叠的顺序?
我正在地图上画代表商店的标记 在关闭上一个单击的标记后,会为每个单击的标记显示一个全局信息窗口 在某些情况下,一些商店可能有相同的地址,因此标记显示在彼此的顶部,人们只能看到顶部标记 为了解决这个问题,我在infoWindow中添加了分页 问题是顶部标记是列表中的最后一个标记,因此信息窗口显示最新的店铺信息,分页显示“后退”按钮,而不是先显示第一家店铺和“下一步”按钮 我试着像这样反转“for”循环的顺序Javascript 如何颠倒标记相互重叠的顺序?,javascript,google-maps,google-maps-markers,Javascript,Google Maps,Google Maps Markers,我正在地图上画代表商店的标记 在关闭上一个单击的标记后,会为每个单击的标记显示一个全局信息窗口 在某些情况下,一些商店可能有相同的地址,因此标记显示在彼此的顶部,人们只能看到顶部标记 为了解决这个问题,我在infoWindow中添加了分页 问题是顶部标记是列表中的最后一个标记,因此信息窗口显示最新的店铺信息,分页显示“后退”按钮,而不是先显示第一家店铺和“下一步”按钮 我试着像这样反转“for”循环的顺序for(I=limit;I>0;I--),但它不起作用。该映射被卡住,好像运行了一些ajax
for(I=limit;I>0;I--)
,但它不起作用。该映射被卡住,好像运行了一些ajax请求
代码如下:
function drawShopsMarkers(){
var marker;
markersArray = [];
var i;
var limit = globalShopsArr.length;
for (i=0; i<limit; i++){
marker = new google.maps.Marker({
position: new google.maps.LatLng(globalShopsArr[i].shopLat, globalShopsArr[i].shopLng),
map: map,
title: globalShopsArr[i].shopTitle
});
markersArray.push(marker);
marker.setMap(map);
google.maps.event.addListener(markersArray[i], 'click', makeListener(i));
}
function makeListener(index) {
return function() {
globalInfowindow.disableAutoPan=true;
globalInfowindow.open(map,markersArray[index]);
CreateInfoWindowString(index);
globalInfowindow.setOptions({
content: globalContentString
});
}
}
}
函数drawShopsMarkers(){
var标记;
markersArray=[];
var i;
var limit=全局跳变长度;
对于(i=0;iTry
在注释中建议的。当你把函数附加到标记时,你需要改变这个行。当你把标记推到数组时,它会累积,但是你把函数附加到一个不存在的元素上。使用另一个变量,并在循环中增加它:C++ +/p>
c++
这一行是google.maps.event.addListener(markersArray[i]。。。
当您将循环更改为递减i并尝试markersArray[i]时,它必须给出一个错误,因为元素i还不在数组中。因此,创建一个c变量,并像我写的那样使用它,并将行更改为使用c而不是i。for(i=limit;i>0;i--)
关闭1,您应该为(i=limit-1;i>=0;i--)编写
谢谢。很抱歉,我不明白。我写的代码是有效的,但它与我需要的正好相反。那么为什么当我反转循环时,有一个不存在的元素?你能举例说明你的意思吗?
c++
google.maps.event.addListener(markersArray[i],.. ... ...