2012-04-09 79 views
0

我想將一個數組賦給下面的javascript函數中的一個標記。它不適用於推送,也不適用於註釋聲明。我不確定是否允許地圖標記具有數組。 marker.mycategory工作正常,它只是不工作的數組。如何在javascript中爲Google地圖標記數組賦值0

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

您的循環之前添加marker.myanimals = [];,比它應該工作

+0

謝謝,這是做到了。 – Tonya 2012-04-10 16:37:37

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'))。