API Google地图v3:在zoom_changed上更改标记的大小

时间:2012-09-17 09:19:17

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

我在Google Maps API v3上需要一些帮助。

我有一张带有标记(图片)的地图,来自数据库的信息。目前图片和地图都还可以。

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

这是我的代码:

//这部分没问题

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)
        );
    }
});

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

根据docssetIcon采用字符串或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))
    );
}