如何在Sencha中通过GPS获取用户位置

时间:2012-03-29 12:27:25

标签: android sencha-touch

我正试图在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。

3 个答案:

答案 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 agothe 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模拟器上显示。但它会在手机上展示尝试..

很开心。