我正试图在Sencha Touch 2中获得用户位置:
var geo = new Ext.util.Geolocation({
autoUpdate: true,
allowHighAccuracy: true,
listeners: {
locationupdate: function(geo) {
lat = geo.getLatitude();
lon = geo.getLongitude();
// here comes processing the coordinates
}
}
});
但我只有来自网络的坐标。 Android设备上没有GPS图标,指出我正在使用GPS。当我关闭互联网连接时它也不起作用。如何启用GPS定位?在Manifest文件中启用了GPS。
答案 0 :(得分:1)
我也有点喜欢这个。
事实证明Sencha中存在一个错误:在Ext.util.Geolocation.parseOption中,他们将参数命名为allowHighAccuracy
,但the w3c specs将其命名为enableHighAccuracy
。
我将以下代码添加到我的应用程序init中以修复它:
var parseOptions = function() {
var timeout = this.getTimeout(),
ret = {
maximumAge: this.getMaximumAge(),
// Originally spells *allowHighAccurancy*
enableHighAccuracy: this.getAllowHighAccuracy()
};
//Google doesn't like Infinity
if (timeout !== Infinity) {
ret.timeout = timeout;
}
return ret;
};
Ext.util.Geolocation.override('parseOptions', parseOptions);
记录:错误has been reported over a year ago和the fix was applied for TOUCH-2804 in a recent build
。我不知道这意味着什么,但确定这个bug仍然在2.0
编辑:使用上述方法也不能很好地工作。当Exts使用setInterval重复调用getCurrentPosition时,GPS图标将打开和关闭。这样做的原因是The native watchPosition method is currently broken in iOS5
。在我的Android目标应用程序中,我最终放弃了Ext:util.Geolocation并且直接使用了navigator.geolocation.watchPosition。之后,它就像一个魅力。
答案 1 :(得分:0)
GPS位置提供商使用卫星确定位置。根据条件,此提供程序可能需要一段时间才能返回位置修复程序。 需要权限 android.permission.ACCESS_FINE_LOCATION。
答案 2 :(得分:0)
嘿,我认为您需要更新经度和纬度值。
点击此链接.. Click Here
我已经尝试过并在Android手机上进行测试..它正在工作。
注意:必须和应该在Android手机上测试GPS状态。它不会在eclipse模拟器上显示。但它会在手机上展示尝试..
很开心。