📅  最后修改于: 2023-12-03 15:13:11.717000             🧑  作者: Mango
@ionic-native/geolocation
是一个 Cordova 插件的包装器,可以在 Angular 和 Ionic 应用程序中使用。它提供了访问设备地理位置的 API,允许您获取用户设备的经纬度信息。
要安装 @ionic-native/geolocation
包,请使用以下命令:
npm install @ionic-native/geolocation
@ionic-native/geolocation
可以与两种不同的方式一起使用:回调和 Promise。下面是使用回调函数的示例:
import { Geolocation } from '@ionic-native/geolocation/ngx';
constructor(private geolocation: Geolocation) { }
this.geolocation.getCurrentPosition().then((resp) => {
// resp.coords.latitude
// resp.coords.longitude
}).catch((error) => {
console.log('Error getting location', error);
});
使用 Promise 的示例:
import { Geolocation } from '@ionic-native/geolocation/ngx';
constructor(private geolocation: Geolocation) { }
let options = {
enableHighAccuracy: true
};
this.geolocation.getCurrentPosition(options).then((resp) => {
// resp.coords.latitude
// resp.coords.longitude
}).catch((error) => {
console.log('Error getting location', error);
});
您可以从 options
对象中设置选项,使其适应您的需要。例如,您可以启用或禁用高精度模式(默认值为 false)。
如果您想在用户移动时获取即时位置信息,则可以使用 watchPosition
方法:
import { Geolocation } from '@ionic-native/geolocation/ngx';
constructor(private geolocation: Geolocation) { }
let watch = this.geolocation.watchPosition();
watch.subscribe((data) => {
// data.coords.latitude
// data.coords.longitude
});
watchPosition
方法返回一个 Observable,每当位置发生更改时,就会发出一个新的位置对象。
在使用 @ionic-native/geolocation
插件之前,您需要在应用程序的 AndroidManifest.xml 或 Info.plist 文件中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your message goes here</string>
您还需要通过添加此插件的代码行(只需添加一次)来向用户请求位置访问权限:
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.ACCESS_COARSE_LOCATION).then((result) => {
if (!result.hasPermission) {
this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.ACCESS_COARSE_LOCATION);
}
});