0

我正在尝试在我的 javascript 中使用计时器每隔 5 秒从我在 cshtml 中的其他对象中轮询某些数据,并将其更新到 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 的错误未定义。

无论如何我可以解决我的问题。

例如,我想每 5 秒更新一次新的 google.maps.LatLng(51.508742, -0.120850) 中的参数。

4

3 回答 3

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全局化,因为它会center: new google.maps...立即触发,并且你的google变量还没有到位(这就是你得到 google undefined 的原因)。

关于初始化未定义,把你的功能放在setInterval里面$(document).ready

于 2013-10-09T09:03:34.280 回答
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 回答