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

您的代码似乎正确。我想,应用程序冻结背后还有其他一些问题。您仍然可以尝试检查一次,

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 回答
0

使用 Google map api v3 实现主页按钮

于 2013-11-11T05:56:03.497 回答
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 回答