0

ユーザーがボタンをクリックするたびに現在の場所を取得しようとしています。

 function checkConnection() {

  // check if there is connection and call the getcurrent position function
        navigator.geolocation.getCurrentPosition(onLocSuccess, onLocError);   

    }

    function onLocSuccess(position) {



                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
                    myPosition = new google.maps.LatLng(latitude, longitude);
            //..........
            //..........
            // do something more
            //.....
        }

ブラウザでは、これは正常に機能します。しかし、デバイス (iphone5 でのテスト) では、2 ~ 3 回の要求の後、このコードは場所を取得しません。フリーズし、アプリがフリーズします。

しかし興味深いことに、onLocSuccess内にアラートを配置すると、正常に動作します!!!

    function onLocSuccess(position) {


            alert('this alert solves the issue');
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;
            myPosition = new google.maps.LatLng(latitude, longitude);
    //..........
    //..........
    // do something more
    //.....
}

何が間違っている可能性がありますか?

4

3 に答える 3

0

最後にsettimeoutを使用しました。これはうまくいきます!

 function onLocSuccess(position) {


      setTimeout(function () {
          var latitude = position.coords.latitude;
          var longitude = position.coords.longitude;
          myPosition = new google.maps.LatLng(latitude, longitude);
          //..........
          //..........
          // do something more
          //.....
      }, 50);
  }
于 2013-11-11T11:11:47.283 に答える
0

あなたのコードは正しいようです。アプリがフリーズする原因は他にもあると思います。それでも、これを一度試して確認することはできますが、

getCurrentLocation : function() {
        var me = this;
        if(navigator.geolocation){
            navigator.geolocation.getCurrentPosition(function(position) {
                me.latitude = position.coords.latitude
                me.longitude =  position.coords.longitude;

                // User's location'
                me.position = new google.maps.LatLng(me.latitude, me.longitude);
            });
        } else {
            Ext.Msg.alert("Sorry, browser does not support geolocation!");
        }  
    }
于 2013-11-11T09:59:47.530 に答える