0

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

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);),第一个警报将不再触发。

提前致谢。

4

1 回答 1

1

的回调在分配的某个时间异步navigator.geolocation.getCurrentPosition执行。(可能)需要用户的反馈,回调仅在之后执行。同时,您的其余代码继续运行。 var mapOptionsnavigator.geolocation.getCurrentPosition

如果用户忽略回调,则根本无法保证回调运行,因此最好的策略是使用默认位置构建地图,然后在成功定位用户后,从回调中更新地图位置。navigator.geolocation.getCurrentPosition

于 2012-10-07T03:11:03.307 回答