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

Posted

技术标签:

【中文标题】如何在 Sencha 中通过 GPS 获取用户位置【英文标题】:How to get user position by GPS in Sencha 【发布时间】:2012-03-29 12:27:24 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我也只是被这个咬了。

事实证明 Sencha 中有一个错误:在 Ext.util.Geolocation.parseOption 中,他们将参数命名为 allowHighAccuracy,但 the w3c specs 将其命名为 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);

记录:错误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。之后,它就像一个魅力。

【讨论】:

是的,我也终于开始使用Phonegap的navigator.geolocation.watchPosition 该错误已在 2.02 中修复 enableHighAccuracy 并可供支持订阅者使用,下一个公开版本是 2.1【参考方案2】:

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

【讨论】:

是的,添加了这个权限。但是没有使用 GPS,并且在关闭互联网的情况下根本不会调用 locationupdate 参考此链接:developer.android.com/reference/android/webkit/… 和 developer.android.com/guide/topics/location/… 我需要访问这些功能,而不是在纯 Java 中,而是在 Sencha 框架中。【参考方案3】:

嘿,我认为您需要更新的经度和纬度值。

点击此链接..Click Here

我已经尝试过了,并在安卓手机上测试过。它的工作原理。

注意:必须并且应该在具有 GPS 状态的 android 手机中进行测试。它不会在eclipse模拟器上显示。但是会显示在手机上试试看..

玩得开心。

【讨论】:

有趣的信息,但它也适用于纯 Java。我在 Sencha 框架中开发,我需要通过这个框架访问 GPS。在文档中,他们说 Ext.util.Geolocation 自动使用 GPS,但我无法做到。

以上是关于如何在 Sencha 中通过 GPS 获取用户位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中通过 Wifi 获取位置?

在 Unity 中通过代码打开 GPS

如何获取当前 GPS 位置? (最后不知道)

如何在没有 GPS 的情况下连续获取用户位置

如何防止其他用户更改 gps 位置和位置更新调用每个小间隔(比如 3 秒)

Android:如何使用 GPS 提供程序获取离线当前位置?