Sencha触摸地理位置在设备上(iPhone 5)上2-3次后获取当前位置不起作用



每次用户单击按钮时,我都会尝试获取当前位置。

 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
    //.....
}

可能出了什么问题?

使用谷歌地图 API v3 实现主页按钮

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

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!");
        }  
    }

最后使用了设置超时。这行得通!

 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);
  }

最新更新