如何在javascript中为谷歌地图标记数组赋值

How to assign value to google map marker array in javascript

本文关键字:图标 地图 数组 赋值 谷歌 javascript      更新时间:2023-09-26

我正在尝试将数组分配给下面的javascript函数中的标记。 它不适用于推送或注释掉的语句。 我不确定地图标记是否允许具有数组。 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()

感谢您对此的任何帮助。

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

在你的 for 循环之前添加一个marker.myanimals = [];,那么它应该可以工作