2012-09-17 160 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