访问标记图标的图像数组元素

时间:2015-03-13 00:45:01

标签: javascript arrays google-maps google-maps-api-3

我希望每个标记都有不同的图标。我只是在我的位置数组的末尾添加了图标路径(作为字符串) 我不确定我是否在我的标记内正确访问了图标。 for循环。

我在运行时在控制台中收到此错误:

Uncaught InvalidValueError: setIcon: not a string; and no url property; and no path property

我认为这告诉我路径不正确/不存在,这是正确的,所以我相信它没有正确访问数组。
我该怎么做?或者图标本身应该在一个单独的数组中吗?

编辑:如果我将它们放在一个单独的数组中,图标会正确加载,但是我想知道我是否可以使用一个多维数组而不是多维数组和另一个标准数组。

function initialize() {

var locations = [
     ['Title A', 3.180967,101.715546, 1, '/images/icons/letter_a.png'],
     ['Title B', 3.200848,101.616669, 2,'/images/icons/letter_b.png'],
     ['Title C', 3.147372,101.597443, 3,'/images/icons/letter_c.png'],
     ['Title D', 3.19125,101.710052, 4, '/images/icons/letter_d.png']
];



  var myLatlng = new google.maps.LatLng(3.182362,101.044922);

  var mapOptions = {
    zoom: 4,
    center: myLatlng
  }
  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var infowindow = new google.maps.InfoWindow;
  var marker, i;

  for (i = 0; i < locations.length; i++){
    marker = new google.maps.Marker({
      position: new google.maps.LatLng(locations[i][1], locations[i][2]),
      map: map,
        icon: locations[i][3]
    });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
         return function() {
             infowindow.setContent(locations[i][0]);
             infowindow.open(map, marker);
         }
    })(marker, i));

  }

}

google.maps.event.addDomListener(window, 'load', initialize);

1 个答案:

答案 0 :(得分:0)

您的阵列位置错误icon: locations[i][3]是数字值icon: locations[i][4]是图标网址的引用,更改此行并且您将在那里:)