0

JavaScript でタイマーを使用して、cshtml の他のオブジェクトから 5 秒ごとに特定のデータをポーリングし、それを JavaScript の関数に更新しようとしています。

私は次のコードを調べましたが、初期化のエラーが未定義であるようです

function initialize() {

    var mapProp = {
        center: new google.maps.LatLng(51.508742, -0.120850),
        zoom: parseInt(5),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("googleMap")
        , mapProp);


}

$(document).ready(function () {
    initialize();
});
window.setInterval(function () {
    /// call your function here
    initialize();
}, 5000);

ただし、これは完全に正常に機能します

function initialize() {

    var mapProp = {
        center: new google.maps.LatLng(51.508742, -0.120850),
        zoom: parseInt(5),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("googleMap")
        , mapProp);


}

$(document).ready(function () {
    initialize();
});

5秒ごとにマップ上のフォーカスを更新できるように変数をグローバルにしたいので、グローバル変数にしようとしました

    var mapProp = {
        center: new google.maps.LatLng(51.508742, -0.120850),
        zoom: parseInt(5),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

ただし、スクリプトが google is undefined というエラーを出し続けているようです。

とにかく私は私の問題を解決できますか?

たとえば、新しい google.maps.LatLng(51.508742, -0.120850) のパラメーターを 5 秒ごとに更新したいと思います。

4

3 に答える 3

1

これが作業コードです。

<!DOCTYPE html>
<html>
    <head>
        <script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
        </script>
        <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
        <script>
            var mapProp;
            $(document).ready(function(){initialize();})
            function initialize()
            {
                mapProp = changeMapProp();
                var map=new google.maps.Map(document.getElementById("googleMap")
                ,mapProp);
            }
            function changeMapProp() {
                mapProp = {
                    center:new google.maps.LatLng(52.508742,-0.120850),
                    zoom:5,
                    mapTypeId:google.maps.MapTypeId.ROADMAP
                };
                return mapProp;
            }
            window.setInterval(function () {
                /// call your function here
                initialize();
            }, 5000);

        </script>
    </head>

    <body>
        <div id="googleMap" style="width:500px;height:380px;"></div>

    </body>
</html> 
于 2013-10-09T09:05:52.530 に答える
1

試す:

var mapProp;
var map;

var initialize = function() {

    mapProp = {
        center: new google.maps.LatLng(51.508742, -0.120850),
        zoom: parseInt(5),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("googleMap")
        , mapProp);

}

$(document).ready(function () {

    setTimeout(initialize, 5000);

});
于 2013-10-09T09:02:43.260 に答える
1

すぐに起動し、変数がまだ配置されていないため、var mapPropグローバルにすることはできません(これが、google undefined を取得する理由です)。center: new google.maps...google

初期化未定義については、関数のsetInterval中に入れてください$(document).ready

于 2013-10-09T09:03:34.280 に答える