每次用户单击按钮时,我都会尝试获取当前位置。
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);
}