2

Google Maps API v3 についてサポートが必要です。

マーカー (写真)、データベースからの情報を含むマップがあります。現時点では、写真と地図は問題ありません。

zoom を変更するときにマーカーのサイズを変更したいのですが、コードが機能しません (写真が消え、デフォルトのアイコンに置き換えられます)。何が悪いのか教えてください。

これが私のコードです:

// この部分はOK

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']; ?>)
});

// 問題の 2 番目の部分 (このリスナーは、マップを作成した直後、レンダリングする前に配置されます)

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

ご協力いただきありがとうございます !

4

1 に答える 1

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))
    );
}
于 2012-09-17T09:25:12.707 に答える