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 に答える