无法在 Ionic 框架上使用人行横道获取地理位置(未发现错误)

Posted

技术标签:

【中文标题】无法在 Ionic 框架上使用人行横道获取地理位置(未发现错误)【英文标题】:Cannot get Geolocation with Crosswalk on Ionic Framework (No errors found) 【发布时间】:2015-02-01 13:04:02 【问题描述】:

在我将基于 Ionic 的应用程序与 Crosswalk 集成之前,获取地理位置信息运行良好。但是当我使用 Crosswalk 时,它加快了我的应用程序的速度并且运行良好,除了地理位置。我无法获得纬度/经度,但我的应用中没有警告错误。

我的代码是一样的。

      var onSuccess = function(position) 
          localStorage.latitude = position.coords.latitude;
          localStorage.longitude = position.coords.longitude;
      ;

      function onError(error) 
          alert('code: '    + error.code    + '\n' +
                'message: ' + error.message + '\n');
      

      navigator.geolocation.getCurrentPosition(onSuccess, onError);

【问题讨论】:

【参考方案1】:

crosswalk 开发团队似乎已注意到此功能,并进行了一系列修复,因此现在应该可以在大多数设备上使用。详情请见this thread。

您必须尝试/验证的最明显解决方案是您已在设备上启用定位服务!

设置 -> 位置 -> 启用位置(GPS/WIFI)

这对我来说绝对是这种情况,但是,如果您发现自己使用的是不受支持的设备(请参阅上面的帖子),那么您将有多种选择...

    更新您的安卓版本。 切换到兼容设备。 等待人行横道支持它。

祝你好运。

【讨论】:

【参考方案2】:

我也注意到了。由于某种原因,基于浏览器的 navigator.geolocation 对象无法在带有人行横道容器的科尔多瓦上工作。

您可以为 cordova 安装地理定位插件。

cordova plugin add cordova-plugin-geolocation

这解决了我的问题,不需要重写代码,因为它替换了同一个导航器对象。

【讨论】:

【参考方案3】:

使用地理定位需要用户许可,因此您需要在人行横道上指定它manifest.json,方法是添加如下内容:

"xwalk_permissions": [
  "Contacts",
  "Geolocation",
  "Messaging",
  "Vibration"
 ]

(阅读https://crosswalk-project.org/documentation/manifest/permissions.html)。

更新

我解决了:

  "xwalk_android_permissions": [ "ACCESS_FINE_LOCATION" ]

【讨论】:

以上是关于无法在 Ionic 框架上使用人行横道获取地理位置(未发现错误)的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法通过 ionic 框架在 Android 上接收推送通知

无法使用 ionic2 在设备上获取上一页名称

如何在人行横道科尔多瓦上进行地理定位

Ionic & ngCorgova 地理定位

离子服务无法获取/找不到模块'@ionic-native/splash-screen/ngx'

地理位置 Ionic 3 始终返回“”