Tonya
Tonya

Reputation: 5

How to assign value to google map marker array in javascript

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

Answers (2)

Engineer
Engineer

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

Mirko Lindner
Mirko Lindner

Reputation: 628

add a marker.myanimals = []; before your for loop, than it should work

Upvotes: 0

Related Questions