离子地理定位总是陷入错误方法
Posted
技术标签:
【中文标题】离子地理定位总是陷入错误方法【英文标题】:Ionic Geolocation always falls into error method 【发布时间】:2020-05-29 18:38:59 【问题描述】:我一直未能达到我想要的结果。我想要的只是获取地理位置坐标,如果设备位置已关闭,则会显示提示以在不离开应用程序的情况下启用该位置,并且设备位置已打开,我已手动验证。
但问题是我每次尝试都会陷入错误方法
import LocationAccuracy from '@ionic-native/location-accuracy/ngx';
import Plugins from '@capacitor/core';
const Geolocation = Plugins;
this.locationAccuracy.request(this.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY).
then(() =>
Geolocation.getCurrentPosition( enableHighAccuracy: true ).then(loc =>
alert('Position detected successfully' + loc);
).catch(error =>
alert(error);
);
).catch(deny =>
alert('You denied the location');
);
但是有一点很奇怪,那就是在启动应用程序之前,如果我运行谷歌地图并定位自己,那么我的应用程序可以正常运行,否则会一直陷入错误方法。
【问题讨论】:
【参考方案1】:我认为您不需要 cordova-plugin-request-location-accuracy。以下是使用 Capacitor 获取当前位置的方法:
页面类(更新了错误处理):
import Component from '@angular/core';
import GeolocationPosition, Plugins from '@capacitor/core';
const Geolocation = Plugins;
@Component(
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
)
export class HomePage
currentPos: GeolocationPosition;
waitingForCurrentPosition = false;
constructor()
async getCurrentPos()
try
this.waitingForCurrentPosition = true;
this.currentPos = await Geolocation.getCurrentPosition();
console.log(this.currentPos);
catch (err)
console.error('Failed to get current position.', err);
finally
this.waitingForCurrentPosition = false;
页面模板:
<ion-header>
<ion-toolbar>
<ion-title>
Capacitor Geolocation
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-button (click)="getCurrentPos()" expand="block">
<ion-spinner *ngIf="waitingForCurrentPosition"></ion-spinner>
Get Current position
</ion-button>
<ul *ngIf="currentPos">
<li>timestamp: currentPos.timestamp </li>
<li>coords:
<ul>
<li>latitude: currentPos.coords.latitude </li>
<li>longitude: currentPos.coords.longitude </li>
<li>accuracy: currentPos.coords.accuracy </li>
<li>altitudeAccuracy: currentPos.coords.altitudeAccuracy </li>
<li>altitude: currentPos.coords.altitude </li>
<li>speed: currentPos.coords.speed </li>
<li>heading: currentPos.coords.heading </li>
</ul>
</li>
</ul>
</ion-content>
当您尝试获得职位(点击按钮)时,该应用将请求权限。
这适用于 2 台测试设备:
一加 6 (android 10) BlackView A60 (Android Go)我之前在 iPhone 6S 上测试过,所以它应该也适用于 ios。
我创建了一个basic demo in this repo。
【讨论】:
问题是它只有在打开应用程序之前打开设备 GPS 时才有效,如果我在设备期间打开 GPS 它将不起作用。 PScordova-plugin-request-location-accuracy.
的准确性只是提示用户在 GPS 已关闭的情况下启用它。如果 GPS 已打开,则不会弹出提示
我明白了。我明白了cordova-plugin-request-location-accuracy
的意思,我不知道只有在电容器中才能替代它(我会很感兴趣,因为那个 Cordova 包很重)。但是在我的 Android 手机上,如果我关闭位置,然后打开应用程序,然后打开位置,然后请求当前位置,它就可以工作。
为什么它在我的情况下不起作用?只是你的想法
我不知道 :( 我可以在几分钟内发布一个指向我的测试项目的链接。以上是关于离子地理定位总是陷入错误方法的主要内容,如果未能解决你的问题,请参考以下文章