Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在google map api中更改缩放更改上的标记_Javascript_Jquery_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 如何在google map api中更改缩放更改上的标记

Javascript 如何在google map api中更改缩放更改上的标记,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我有一张地图,当缩放大于5时,我想更改标记图像。 我知道如何检测变焦变化,但我不知道如何改变图像。这应该很容易。我查看了您的代码,看起来您没有保留对标记的引用。这是你应该做的第一件事 因此,创建一个标记数组: var markers = []; 在setMarkers()函数中,将每个新标记推入该数组: markers.push(marker); 现在,您将能够使用for循环迭代标记:for(i=0;i

我有一张地图,当缩放大于5时,我想更改标记图像。

我知道如何检测变焦变化,但我不知道如何改变图像。

这应该很容易。我查看了您的代码,看起来您没有保留对标记的引用。这是你应该做的第一件事

因此,创建一个
标记
数组:

var markers = [];
setMarkers()
函数中,将每个新标记推入该数组:

markers.push(marker);
现在,您将能够使用for循环迭代标记:
for(i=0;i

理想情况下,我们还应该将每个标记的两个图标存储在标记对象本身中。JavaScript对象可以很容易地通过自定义属性进行扩充。为此,您可能需要更改
setMarkers()
函数,如下所示:

function setMarkers(map, map_bounds, locations, iconLevel1, iconLevel2) {
  for (var i = 0; i < locations.length; i++) {
    var loc = locations[i];
    var myLatLng = new google.maps.LatLng(loc[1], loc[2]);

    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map,
      icon: iconLevel1,    // iconLevel1 by default
      title: loc[0],
      zIndex: loc[3]
    });

    // Add custom properties to the marker object
    marker.iconLevel1 = iconLevel1;
    marker.iconLevel2 = iconLevel2;

    // Add the new marker to the markers array
    markers.push(marker);

    map_bounds.extend(myLatLng);
  }
}
上述操作应该可以正常工作,但您可能希望按如下方式重构for循环,使用以访问标记的属性:

for (i = 0; i < markers.length; i++) {
  markers[i].setIcon(markers[i]['iconLevel' + zoomLevel]);
}
for(i=0;i
我不喜欢写太多的代码,所以我用这种方式为自己的项目解决了这个问题:

var z = myMap.getZoom();
var m = new google.maps.Marker({
    position    : new google.maps.LatLng(myLat, myLng),
    icon        : myMarker( z ),
    map         : myMap
});
函数
myMarker()
是一个自定义函数,我在其中传递缩放级别并返回普通图像数据。您可以使用字符串连接轻松生成url:

icon        : 'myMarkerIcon_level'+ z +'.png'
icon        : 'myMarkerIcon_level'+ z +'.png'