1

データベースからCirclesとInfowindowsをフェッチするPHPで小さなGoogleMapsAPIを構築しようとしました。インフォウィンドウを開いた後に閉じる以外は、何でも機能します。

Chromeデベロッパーコンソールは次のエラーをスローします:GET http://maps.googleapis.com/maps/api/js/StaticMapService.GetMapImage?1m2&1i151368577549307460&2i99567197161272770&2e2&3u50&4m2&1u512&2u496&5m3&1e2&2b1&5sde

また、赤いポップアップをクリックすると、次のエラーが表示されます。Uncaught TypeError:Object#にはメソッド'O'がありません

今何時間も解決策を見つけようとしました、あなたが私を助けてくれることを願っています!

ありがとうございました!

    <script type='text/javascript'>
        var _infoWindow = new Array();var _marker = new Array();

        function initialize()   {
            var mapOptions = {
                zoom: 50,
                center: new google.maps.LatLng(48.52039, 9.05949),
                mapTypeId: google.maps.MapTypeId.SATELLITE
            };
            var map = new google.maps.Map(document.getElementById('map'), mapOptions);


            var circles = [{"color":"fff","center":new google.maps.LatLng(48.5204, 9.05949),"radius":200}];     

            for(var circle in circles)  {
                new google.maps.Circle({
                    strokeColor: circles[circle].color,
                    strokeOpacity: 1,
                    strokeWeight: 2,
                    fillColor: circles[circle].color,
                    fillOpacity: 0.35,
                    map: map,
                    center: circles[circle].center,
                    radius: circles[circle].radius
                });
            }

            var infoWindows = [{"center":new google.maps.LatLng(48.5204, 9.05949),"content":"<h2>Juhu!<\/h2>Html<br>Content <b>erlaubt<\/b>!"}];
            var i = 0;

            for(var infoWindow in infoWindows)  {
                _infoWindow[i] = new google.maps.InfoWindow({
                    content: infoWindows[infoWindow].content
                });


                _marker[i] = new google.maps.Marker({
                    position: infoWindows[infoWindow].center,
                    map: map,
                    title:'Test'
                });


                google.maps.event.addListener(_marker[i], 'click', new Function('_infoWindow['+i+'].open(map,_marker['+i+']);'));

                i++;
            }

        }

        window.onload = function(){
            initialize();
        }
    </script>
</head>

<body>
    <div id='map' style='height:500px;width:500px;'></div>      
</body>

4

1 に答える 1

1

ローカルスコープ(初期化)内でマップ変数を定義しているため、クリックハンドラー内ではアクセスできません。

これをスクリプトの先頭に追加します。

var map;

そして、この行からvar-keywordを削除します。

var map = new google.maps.Map(document.getElementById('map'), mapOptions);
于 2012-06-30T04:30:10.963 に答える