Reputation: 5
I am trying to assign an array to a marker in the javascript function below. It does not work with push, or with the commented out statement either. I am not sure if a map marker is allowed to have an array. The marker.mycategory works fine, it is only the array that doesn't work.
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()
Thanks for any help on this.
Upvotes: 0
Views: 2345
Reputation: 48793
google.maps.Marker extends google.maps.MVCObject, so it will be good ,that you use the methods of MVCObject
.
Instead of:
for (var i = 0; i < animals.length; i++)
marker.myanimals.push(animals[i]);
//marker.myanimals[i] = animals[i];
marker.mycategory = category;
marker.myname = name;
Use :
marker.setValues({
mycategory : category,
myname : name,
myanimals : JSON.parse(JSON.stringify(animals)) //Deep copy of 'animals' array
});
And to access property, use get
method ( e.g. marker.get('mycategory')
).
Upvotes: 1
Reputation: 628
add a marker.myanimals = [];
before your for loop, than it should work
Upvotes: 0