【问题标题】:Phonegap/Cordova Geolocation Not working on Android 4.0+ but Working on all other platformsPhonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台
【发布时间】:2014-07-12 20:25:06
【问题描述】:

我正在使用 Phonegap 3.30 版和 Sencha Touch 提供的 Phonegap 构建和 UI 元素。该应用程序的第一页包含一张地图,地图是使用开放的街道地图和使用 sencha 触摸库 https://market.sencha.com/extensions/ext-ux-leafletmap 的传单呈现的。

如果我将地图设置为不使用在地图上显示您的位置的地理位置选项,则地图在所有平台上都能完美呈现,但是当我启用设置以使用地理位置时,地图会完美呈现并覆盖当前位置所有平台(iOS、Android 2.0),但不是 Android 4.0+。

事实上,在 Android 上,地图根本不会呈现,这与它过去使用错误权限时的行为类似。我已通过 Config.xml Phonegap 地理定位插件将应用程序设置为使用 3 个位置权限。这是 Config.xml 的链接https://www.dropbox.com/s/c1im3twg21mnxi6/config.xml

总结一下: 仅启用地理定位的 Android 4.0 会阻止地图呈现,但地图和地理定位适用于所有其他平台。

有人知道是什么原因造成的吗?我没有任何错误被打印到控制台,而且权限是正确的,因为它适用于 Android 2.0,我完全被难住了。

下面的一些图片展示了这个问题,请注意,当应用程序在网络浏览器上运行时,地理定位也可以工作。

启用地理定位后,Android 无法加载

iOS 使用地理位置正确加载

【问题讨论】:

标签: android cordova geolocation sencha-touch-2


【解决方案1】:

我已经解决了这个问题,这个问题发生在 Android 4.2、4.3 和 4.4 上。

您必须在对 Ext.util.geolocation 的调用中明确启用以下选项。允许高精度和频率。这是一个非常令人头疼的问题@Sencha,请让这个简单。

var geo = Ext.create('Ext.util.Geolocation', {
        autoUpdate: false,
        allowHighAccuracy: true,
        frequency: '3000',
        listeners: {
            locationupdate: function(geo) {
                var currentLat = geo.getLatitude();
                var currentLng =  geo.getLongitude();
                var altitude = geo.getAltitude();
                var speed = geo.getSpeed();
                var heading= geo.getHeading();

// Ext.Msg.alert('纬度经度' + currentLat + currentLng); }, 位置错误:函数(地理,bTimeout,bPermissionDenied,bLocationUnavailable,消息){ 如果(b超时){ // Ext.Msg.alert('发生超时',"无法获取当前位置"); } 别的 { // alert('发生错误。'); } } } }); geo.updateLocation();

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多