2012-09-17 122 views
2

我需要Google Maps API v3的一些帮助。API谷歌地图v3:在zoom_changed上更改标记的大小

我有标记(这是图片),从数据库中的信息的地图。图片和地图在这个时候可以。

我想在更改缩放时调整标记大小,但我的代码不起作用(图片消失,代之以默认图标)。你能帮我看看有什么不对吗?

这里是我的代码:

//这部分是确定

var marker = new google.maps.Marker({ 
     map: map, 
     icon: new google.maps.MarkerImage("../images/installateurs/<?php echo $row_artisans['photo0']; ?>", 
      new google.maps.Size(40, 53.2), 
      new google.maps.Point(0, 0), 
      new google.maps.Point(0, 0), 
      new google.maps.Size(40, 53.2) 
     ), 
     position: new google.maps.LatLng(<?php echo $row_artisans['Lat']; ?>, <?php echo $row_artisans['Lng']; ?>) 
}); 

//第二部分哪来的问题(这个监听器只创建地图后放置,使之前)

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var largeur = 20 + (5 *(map.getZoom() - 9)); 
    var ratio = largeur/40; 
    var hauteur = 26.6 * ratio; 

    for(i=0; i< markers.length; i++) { 
     var icon = markers[i].getIcon(); 
     markers[i].setIcon(
      icon.url, 
      new google.maps.Size(largeur, hauteur), 
      new google.maps.Point(0, 0), 
      new google.maps.Point(0, 0), 
      new google.maps.Size(largeur, hauteur) 
     ); 
    } 
}); 

感谢您的帮助!

回答

2

根据docs,setIcon或者采取一个字符串或一个MarkerImage对象。最初,你设置MarkerImage,但在你的监听器的代码,你没有构建一个MarkerImage。尝试这样的事情,而不是:

for(i=0; i< markers.length; i++) { 
    var icon = markers[i].getIcon(); 
    markers[i].setIcon(new google.maps.MarkerImage(
     icon.url, 
     new google.maps.Size(largeur, hauteur), 
     new google.maps.Point(0, 0), 
     new google.maps.Point(0, 0), 
     new google.maps.Size(largeur, hauteur)) 
    ); 
} 
+0

完美!非常感谢 ! :-) – Ecorce