0

Google マップの JavaScript API を使用して、場所のマーカーでいっぱいの地図を表示しています。マーカーは表示されますが、コンソールでクリックすると、「Uncaught TypeError: Cannot read property '0' of undefined」というエラーが表示されますinfowindow.setContent('<div><p>'+locations[i][0]+'</p></div>');。問題は、スクリプトが何が何であるかを認識していないことであることがわかりましiた。i数字を代入してこの結論をテストしましたが、エラーなく動作します。これまでのところi、グローバル変数を作成して、その値を としてテストしてみましwindow.iた。それでも機能しませんでしたが、コンソールでは最後のカウントが表示されました。私が間違っていることはありますか?

function initialize() {
    var locations = [<?php echo $jscript; ?>];

    map = new google.maps.Map(document.getElementById('map-canvas'), {
        zoom: 8,
        center: new google.maps.LatLng(32.639594, -97.117879),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infowindow = new google.maps.InfoWindow();

    var marker = '';
    var i = 0;
    for (i = 0; i < locations.length; i++) {
        var geocoder_map = new google.maps.Geocoder();
        var addlocat;

        geocoder_map.geocode({'address': locations[i][0]}, function (results, status) {
            if (results) {
                addlocat = results[0].geometry.location;

                marker = new google.maps.Marker({
                    position: addlocat,
                    map: map
                });

                google.maps.event.addListener(marker, 'click', (function (marker, i) {
                    return function () {
                        infowindow.setContent('<div><p>' + locations[i][0] + '</p></div>');
                        infowindow.open(map, marker);
                    }
                })(marker, i));

            }
        });
    }
}

google.maps.event.addDomListener(window, 'load', initialize);
4

1 に答える 1