原生离子2地理定位不适用于Android设备

Jan*_*yne 8 android cordova cordova-plugins ionic2 angular

我正在使用本机Ionic 2 Geolocation插件,它无法按预期工作.首先,我添加插件.

ionic plugin add cordova-plugin-geolocation
Run Code Online (Sandbox Code Playgroud)

然后我导入插件并发出调用以获取当前位置.

import { Geolocation } from 'ionic-native';
import { Geoposition, GeolocationOptions } from 'ionic-native/dist/plugins/geolocation';

export class MyComponent {
 protected getLocation():Promise<Geoposition> {
  let options:GeolocationOptions = {
   maximumAge: 0, timeout: 5000, enableHighAccuracy: false
  };
  return Geolocation.getCurrentPosition(options)
   .catch(error => { console.error(error.message) };
 }
}
Run Code Online (Sandbox Code Playgroud)

我还检查了我的AndroidManifest.xml.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

我注意到总是超时超时.如果我把它保留为默认值(默认情况下超时设置为无穷大),那么大约20分钟后,我确实得到了一个地理位置.当然,20分钟并不理想.

我也试过使用navigator如下.但我得到了完全相同的结果.

navigator.geolocation.getCurrentPosition(
 position => {
  console.info('using navigator');
  console.info(position.coords.latitude);
  console.info(position.coords.longitude);
 },
 error => {
  console.warn('using navigator');
  console.warn(error.code);
  console.warn(error.message);
 },
 options
);
Run Code Online (Sandbox Code Playgroud)

测试时Chrome,代码按预期工作; 唯一的区别是我得到一个弹出窗口,询问我是否要允许该页面访问我的位置.

我看到很多人在Ionic上也有同样的问题,但也就是版本1.我想在Ionic 2的背景下提出这个问题.

顺便说一下,我还更新了Cordova,版本显示为6.0.2.

npm update -g cordova
Run Code Online (Sandbox Code Playgroud)

版本信息

  • 离子2.0.0-beta.30
  • 科尔多瓦6.0.2
  • Gulp CLI 1.2.1和本地3.9.1

lik*_*rRr 1

也许我找到了解决方案。问题出在我的 GPS 模块上。最终它不再在任何网站上找到我的位置。我重新加载了手机,现在一切正常。

因此,首先检查您是否可以在maps.google.com等网站上确定您的位置。如果它无法确定您的位置,则问题出在您的手机上。尝试重新加载或重新刷新它。