我正在寻找一种处理googlemap标记的好方法。
我需要做的是在数组(或对象)中存储标记,并能够使用键(marker_1)对它们进行地址处理,并且还能够遍历整个数组并访问所有元素以从地图中取消它们。< / p>
目前我有:
var markers = []; // global | was using var markers = {}; earlier
// and i add elemtnts like this ()
markers[elementid] = {
lat: varlat,
lng: varlng',
desc: vardesc,
markerobj: markerobject
}
也许我甚至都不知道自己拥有什么。是阵列,是对象还是混合(从来没有找到任何好的资源来阅读这两者之间的差异)。
我可以在没有问题的情况下使用markers["marker_1"]
语法访问它。
但是,那些不允许我循环遍历对象/数组:
console.log(markers.length);
// returns 0. but array is defined while debugging code in firebug
for(var i = 0; i < markers.length; i++){
console.log(markers[i]);
}
和
$(markers).each(function(a,b){
alert('works');
});
完全根本不起作用。
为什么我不能像PHP一样创建,遍历和访问数组? :\
答案 0 :(得分:1)
尝试使用:
for(var i in markers){
console.log(markers[i]);
}
也许你在覆盖一些东西。一个数组基于索引,因为你添加一个字符串作为索引立即成为一个对象,访问你的内容的唯一方法就像我放的例子。
这是证明它的另一个例子:
var array = [];
array.push('1');
array['hola'] = {hola: 'mundo'};
for (i in array)
console.log(array[i]);
console.log(array.length);
答案 1 :(得分:0)
您必须通过for循环中的标记['marker _'+(i + 1)]访问,因为元素不能通过索引访问,而是通过其键访问。