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

3
我正在尝试在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定位?在清单文件中启用了GPS。

3个回答

1

我也遇到了这个问题。

原来Sencha有一个bug:在Ext.util.Geolocation.parseOption中,他们将参数命名为allowHighAccuracy,但是w3c规范将其命名为enableHighAccuracy。 我在我的应用程序初始化中添加了以下代码来解决这个问题:

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

记录一下:这个漏洞已经报告了一年多,并且修复已在最近的版本中应用于TOUCH-2804。我不知道那是什么意思,但这个漏洞仍然存在于2.0版本中。

编辑:使用上述方法也不太好使。GPS图标会随着Exts反复调用getCurrentPosition而打开和关闭。这样做的原因是iOS5中本机watchPosition方法目前无法正常工作。在我的面向Android的应用程序中,我最终放弃了Ext:util.Geolocation,直接使用navigator.geolocation.watchPosition。之后它就像魅力一样工作了。


1
是的,我最终也开始使用 Phonegap 的 navigator.geolocation.watchPosition。 - Kirill Bubochkin
1
已在2.02中修复了enableHighAccuracy中的错误,并可供支持订阅者使用,下一个公共版本是2.1。 - Jeff Wooden

0

GPS定位提供程序使用卫星确定位置。根据条件,此提供程序可能需要一段时间才能返回位置修复。需要权限android.permission.ACCESS_FINE_LOCATION。


是的,已添加了这个权限。但是并没有使用GPS,在关闭互联网的情况下locationupdate根本不会被调用。 - Kirill Bubochkin
请参考以下链接:http://developer.android.com/reference/android/webkit/GeolocationPermissions.html 和 http://developer.android.com/guide/topics/location/obtaining-user-location.html。 - Nimit
1
我需要访问这些功能,不是在纯Java中,而是在Sencha框架中。 - Kirill Bubochkin

0

嘿,我认为你需要更新经纬度数值。

请点击此链接 这里

我已经在安卓手机上尝试并测试过了,它可以正常工作。

注意:必须在开启GPS状态的安卓手机上进行测试。它不会在Eclipse模拟器中显示,但是在手机上会显示,请尝试一下。

祝你愉快。


1
有趣的信息,但这也只是针对纯Java。我在Sencha框架中开发,并且需要通过这个框架访问GPS。在文档中,他们说Ext.util.Geolocation自动使用GPS,但我却无法实现。 - Kirill Bubochkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接