2

以下のコードは機能しています。しかし、初期化された標準関数を使用していないため、オンラインの例を使用してマップ上の各住所のカスタム情報ウィンドウを作成することができません。

機能させるには、どのように定義する必要がありますか?

var address = <?php echo json_encode($adr); ?>; //define address array here
var map = new google.maps.Map(document.getElementById('map'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    zoom: 10
});    
var geocoder = new google.maps.Geocoder();
var image = 'http://www.site.com/images/hi.png';
var nbAddresses = address.length;
for (var i=0;i<nbAddresses;i++){
    geocoder.geocode({
        'address': address[i]
    }, 
    function(results, status) {
        if(status == google.maps.GeocoderStatus.OK) {
            new google.maps.Marker({
                position: results[0].geometry.location,
                map: map,
                icon: image,
                title:"Hello"
            });
            map.setCenter(results[0].geometry.location);
        }
    });
}    
4

1 に答える 1

2

これが仕事をするべきJavascriptです

ワーキングデモ

脚本:

geocoder.geocode({
        'address': add
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            mark = new google.maps.Marker({
                position: results[0].geometry.location,
                map: map
            });
            map.setCenter(results[0].geometry.location);
            setInfoWindow();
        }
    });

    function setInfoWindow() {
        google.maps.event.addListener(mark, 'click', function(event) {
            var iwindow = new google.maps.InfoWindow();
            iwindow.setContent(event.latLng.lat() + "," + event.latLng.lng());
            iwindow.open(map, this);

        });
    }

更新: ループを使用して、ジオコーディングの成功後にタイトル値をメーカーに割り当てる方法を示しました。

フィドル

ここで重要なのは、アドレスのフェッチに使用されるループ変数がサブ関数のスコープ内で使用できないため、グローバル変数を作成してインクリメントし、タイトルの配列から新しい値をフェッチする必要があることです。

于 2013-01-02T09:49:13.827 に答える