谷歌地图API工作时,我打破然后继续,否则

时间:2011-09-11 13:01:11

标签: javascript google-maps

此代码在我定义pos之后的任何时间中断,然后继续。但是当我正常运行它时它不会显示任何东西。我做错了什么?

function initialize() {

    var pos;

    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {

            pos = new google.maps.LatLng(position.coords.latitude,
                                             position.coords.longitude);
        }, function() {
               handleNoGeolocation(true);
           });
    }
    else { // Browser doesn't support geolocation
        handleNoGeolocation(false);
    }

    var myOptions = {
        zoom: 7,
        center: pos,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), 
                                      myOptions);

}

3 个答案:

答案 0 :(得分:1)

有趣。你收到错误了吗?你能分享吗?您可能还希望使用console.log()进行调试并围绕它调整try / catch块。我想你可能会在一些旧浏览器中遇到一些问题。

答案 1 :(得分:1)

getCurrentPosition(f, ...)是异步的,这意味着在成功完成请求后稍后会调用回调f。但此时函数pos中的局部变量initialize()不再在范围内。

您可以通过在全局窗口范围中定义pos来解决问题。这应该有效,pos将由回调分配。但是,您不知道何时发生此分配。处理此问题的最佳方法是直接在回调中对pos执行某些操作,例如将其写入文本字段或将其存储在数据库等中

答案 2 :(得分:0)

也许API调用需要花费一点时间,当它中断时,它会花一点时间来检索它需要的任何数据,所以它能够显示它吗?这只是猜测,但你可以尝试在那里延迟看看会发生什么。