Javascript与HTML 5 Geolocation无法正常工作

时间:2012-10-07 03:00:09

标签: javascript html5 geolocation

所以我有一些似乎不起作用的代码。这几乎是页面的顶部。上面只是其他一些声明

window.lat = 42.688;
window.lng = -75.980;

$(function () {
    if (Modernizr.geolocation) {
        alert('ayoson');
        navigator.geolocation.getCurrentPosition(function (position) {
            window.lat = position.coords.latitude;
            window.lng = position.coords.longitude;

        })
    }
    // Build map
    var mapOptions = {
        center: new google.maps.LatLng(window.lat, window.lng),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

我最终得到了我设置的默认值,即使我在Modernizr.geolocation中发出警报时它也会触发。 此外,如果我将警报置于var mapOptions以上(例如alert(window.lng);),则第一个警报不再触发。

提前致谢。

1 个答案:

答案 0 :(得分:1)

分配 navigator.geolocation.getCurrentPosition后,某些时间异步执行<{1}}的回调。 var mapOptions(可能)需要来自用户的反馈,回调仅在之后执行。与此同时,其余代码继续运行。

由于如果用户忽略回调并不能保证完全运行,最好的策略是使用默认位置构建地图,然后,在成功地对用户进行地理定位时,更新地图来自navigator.geolocation.getCurrentPosition回调的位置。