我正在尝试将数组分配给下面javascript函数中的标记。它不适用于push,也不适用于注释掉的语句。我不确定是否允许地图标记具有数组。 marker.mycategory工作正常,只有数组不起作用。
function createMarker(latlng, name, html, category, animals)
{
var markerImg = setMarker(category);
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: name,
icon: markerImg,
});
for (var i = 0; i < animals.length; i++)
marker.myanimals.push(animals[i]);
//marker.myanimals[i] = animals[i];
marker.mycategory = category;
marker.myname = name;
gmarkers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
} // end createMarker()
感谢您提供任何帮助。
答案 0 :(得分:1)
google.maps.Marker扩展google.maps.MVCObject,因此您使用MVCObject
的方法会很好。
而不是:
for (var i = 0; i < animals.length; i++)
marker.myanimals.push(animals[i]);
//marker.myanimals[i] = animals[i];
marker.mycategory = category;
marker.myname = name;
使用:
marker.setValues({
mycategory : category,
myname : name,
myanimals : JSON.parse(JSON.stringify(animals)) //Deep copy of 'animals' array
});
要访问媒体资源,请使用get
方法(例如marker.get('mycategory')
)。
答案 1 :(得分:0)
在for循环之前添加marker.myanimals = [];
,而不是它应该工作