# cordova-plugin-gaodelocation-chenyu
**Repository Path**: nemophi/cordova-plugin-gaodelocation-chenyu
## Basic Information
- **Project Name**: cordova-plugin-gaodelocation-chenyu
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-31
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 高德地图定位 (2.0.5版本)
插件环境 cordova-android >= 7.0.0
#### 1.申请密钥
请参照:
[申请android密钥定位SDK](http://lbs.amap.com/api/android-location-sdk/guide/create-project/get-key/)
[申请ios密钥定位SDK](https://lbs.amap.com/api/ios-location-sdk/guide/create-project/get-key)
#### 2.安装插件
```bash
# 1.通过npm 安装 (2.0.5版本)
cordova plugin add cordova-plugin-gaodelocation-chenyu --variable ANDROID_API_KEY=your android key --variable IOS_API_KEY=your ios key
npm install --save @ionic-native/gao-de-location
# 2.通过github安装 (2.0.5版本,由于github限速,可以将插件克隆或者下载到本地安装)
cordova plugin add https://github.com/waliu/cordova-plugin-gaodelocation-chenyu --variable ANDROID_API_KEY=your android key --variable IOS_API_KEY=your ios key
# 3.或者本地安
cordova plugin add --link 文件路径 --variable ANDROID_API_KEY=your android key --variable IOS_API_KEY=your ios key
```
#### 3.js/ts使用方法
```typescript
// 1.js项目调用
window.GaoDe.getCurrentPosition(successCallback, failedCallback,option);
window.GaoDe.startSerialLocation(successCallback, failedCallback,option);
window.GaoDe.stopSerialLocation(successCallback, failedCallback);
// 2.ts/ionic项目调用。
(window).GaoDe.getCurrentPosition(successCallback, failedCallback,option);
(window).GaoDe.startSerialLocation(successCallback, failedCallback,option);
(window).GaoDe.stopSerialLocation(successCallback, failedCallback);
```
①[ionic2.0.5版本调用方式](https://ionicframework.com/docs/native/gao-de-location)
②[ionic2.0.5版本调用方式](#Mark)
#### 4.定位方法说明
### 获取单次定位
> getCurrentPosition(successCallback,failedCallback,option);
参数|类型|说明
--|:--:|--
successCallback|funtion|回调函数
failedCallback|funtion|回调函数
option|PositionOption|定位参数
### PositionOption
参数|类型|说明
--|:--:|--
androidOption|androidOption|android定位参数
iosOption|iosOption|ios定位参数
### androidOption
参数|类型|说明
--|:--:|--
locationMode|Number|1.精确定位 2.仅设备定位模式;3.低功耗定位模式
gpsFirst|Boolean|设置是否gps优先,只在高精度模式下有效。默认关闭
HttpTimeOut|Number|设置网络请求超时时间。默认为30秒。在仅设备模式下无效
interval|Number|设置定位间隔。默认为2秒 连续定位有效
needAddress|Boolean|设置是否返回逆地理地址信息。默认是true
onceLocation|Boolean|设置是否单次定位。默认是false
onceLocationLatest|Boolean|设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
locationProtocol|Number|设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP。1.http 2.https
sensorEnable|Boolean|设置是否使用传感器。默认是false
wifiScan|Boolean|设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差
locationCacheEnable|Boolean|设置是否使用缓存定位,默认为true
### iosOption
参数|类型|说明
--|:--:|--
desiredAccuracy|Number|1.最适合导航用的定位 iOS4.0以后新增 2.精度最高的定位 3.定位精度在10米以内 4.定位精度在100米以内 5.定位精度在1000米以内 6.3000m以内
pausesLocationUpdatesAutomatically|String|指定定位是否会被系统自动暂停。默认为NO。
allowsBackgroundLocationUpdates|String|是否允许后台定位。默认为NO。
locationTimeout|Number|指定单次定位超时时间,默认为10s。最小值是2s。
reGeocodeTimeout|Number|指定单次定位逆地理超时时间,默认为5s。最小值是2s。
locatingWithReGeocode|String|是否启用逆地址定位 默认YES
```typescript
//调用实例
getCurrentPosition() {
let obj={
androidOption:{
locationMode:1,//定位精度 1.精确定位 2.仅设备定位模式;3.低功耗定位模式
gpsFirst:false,//设置是否gps优先,只在高精度模式下有效。默认关闭
HttpTimeOut:30000,//设置网络请求超时时间。默认为30秒。在仅设备模式下无效
interval:2000,//设置定位间隔。默认为2秒 连续定位有效
needAddress:true,//设置是否返回逆地理地址信息。默认是true
onceLocation:false,//设置是否单次定位。默认是false
onceLocationLatest:false,//设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
locationProtocol:1,// 设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP。1.http 2.https
sensorEnable:false,//设置是否使用传感器。默认是false
wifiScan:true,//设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差
locationCacheEnable:true//设置是否使用缓存定位,默认为true
},
iosOption:{
desiredAccuracy:4,// 1。最适合导航用的定位 iOS4.0以后新增 2.精度最高的定位 3.定位精度在10米以内定位精度在10米以内 4.定位精度在100米以内 5.定位精度在1000米以内 6.3000m
pausesLocationUpdatesAutomatically:"YES",//指定定位是否会被系统自动暂停。默认为NO。
allowsBackgroundLocationUpdates:"NO",//是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iOS系统限制,需要在定位未开始之前或定位停止之后,修改该属性的值才会有效果。
locationTimeout:10, //指定单次定位超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。注意: 单次定位超时时间从确定了定位权限(非kCLAuthorizationStatusNotDetermined状态)后开始计算
reGeocodeTimeout:5, //指定单次定位逆地理超时时间,默认为5s。最小值是2s。注意单次定位请求前设置。
locatingWithReGeocode:"YES" //是否 启用逆地址定位 默认YES
}
};
(window).GaoDe.getCurrentPosition( (res) => {
console.log(JSON.stringify(res));
}, () => {
},obj);
}
```
开启持续定位
> startSerialLocation(successCallback,failedCallback,option);
参数|类型|说明
--|:--:|--:
successCallback|funtion|回调函数
failedCallback|funtion|回调函数
option|PositionOption|定位参数
### androidOption
参数|类型|说明
--|:--:|--
locationMode|Number|1.精确定位 2.仅设备定位模式;3.低功耗定位模式
gpsFirst|Boolean|设置是否gps优先,只在高精度模式下有效。默认关闭
HttpTimeOut|Number|设置网络请求超时时间。默认为30秒。在仅设备模式下无效
interval|Number|设置定位间隔。默认为2秒 连续定位有效
needAddress|Boolean|设置是否返回逆地理地址信息。默认是true
onceLocation|Boolean|设置是否单次定位。默认是false
onceLocationLatest|Boolean|设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
locationProtocol|Number|设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP。1.http 2.https
sensorEnable|Boolean|设置是否使用传感器。默认是false
wifiScan|Boolean|设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差
locationCacheEnable|Boolean|设置是否使用缓存定位,默认为true
### iosOption
参数|类型|说明
--|:--:|--
pausesLocationUpdatesAutomatically|String|指定定位是否会被系统自动暂停。默认为NO。
allowsBackgroundLocationUpdates|String|是否允许后台定位。默认为NO。
locatingWithReGeocode|String|是否启用逆地址定位 默认YES
```typescript
startSerialLocation() {
let obj={
androidOption:{
locationMode:1,
gpsFirst:false,
HttpTimeOut:30000,
interval:2000,
needAddress:true,
onceLocation:false,
onceLocationLatest:false,
locationProtocol:1,
sensorEnable:false,
wifiScan:true,
locationCacheEnable:true
},
iosOption:{
pausesLocationUpdatesAutomatically:"YES",
allowsBackgroundLocationUpdates:"NO",
locatingWithReGeocode:"YES"
}
};
(window).GaoDe.startSerialLocation( (res) => {
console.log(JSON.stringify(res));
}, (e) => {
},obj);
}
```
停止持续定位
> stopSerialLocation(successCallback,failedCallback);
参数|类型|说明
--|:--:|--:
successCallback|funtion|回调函数
failedCallback|funtion|回调函数
#### 5.返回值说明:
返回值字段|返回值类型|说明| android支持|ios支持
--|:--:|--|--|--
latitude|string|获取纬度|√|√
longitude|string|获取经度|√|√
accuracy|string|获取精度信息|√|√
formattedAddress|string|获取地址描述|√|√
country|string|获取国家名称|√|√
province|string|获取省名称|√|√
city|string|获取城市名称|√|√
district|string|获取城区名称|√|√
citycode|string|获取城市编码信息|√|√
adcode|string|获取区域编码信息|√|√
street|string|获取街道名称|√|√
number|string|街道门牌号信息|√|√
POIName|string|获取当前位置的POI名称|√|√
AOIName|string|获取当前位置所处AOI名称|√|√
altitude|string|获取海拔高度信息|√|×
speed|string|单位:米/秒|√|×
bearing|string|获取方向角信息|√|×
buildingId|string|获取室内定位建筑物Id|√|×
floor|string|获取室内定位楼层|√|×
gpsAccuracyStatus|string|获取GPS当前状态,返回值可参考AMapLocation类提供的常量|√|×
locationType|string|获取定位结果来源|√|×
locationDetail|string|定位信息描述|√|×
#### 6.Ionic4使用方法(插件版本 2.0.5 )
```typescript
// app.module.ts ionic3-
import { GaoDeLocation , PositionOptions } from 'cordova-plugin-gaodelocation-chenyu/ionic/gao-de-location';
//ionic 4+
import {
GaoDeLocation,
PositionOptions,
LocationModeEnum,
LocationProtocolEnum,
DesiredAccuracyEnum,
PositionRes
} from 'cordova-plugin-gaodelocation-chenyu/ionic/gao-de-location/ngx';
...
@NgModule({
...
providers: [
...
GaoDeLocation
...
]
...
})
export class AppModule { }
```
```typescript
// app.component.ts
// ionic3-
import { GaoDeLocation , PositionOptions } from 'cordova-plugin-gaodelocation-chenyu/ionic/gao-de-location';
// ionic 4+
import {
GaoDeLocation,
PositionOptions,
LocationModeEnum,
LocationProtocolEnum,
DesiredAccuracyEnum,
PositionRes
} from 'cordova-plugin-gaodelocation-chenyu/ionic/gao-de-location/ngx';
@Component({ ... })
export class xxxComponent {
//注入
constructor(private gaoDeLocation: GaoDeLocation) {}
//调用定位
async getCurrentPosition() {
const positionOptions: PositionOptions = {
androidOption: {
locationMode: LocationModeEnum.Hight_Accuracy,
gpsFirst: false,
HttpTimeOut: 30000,
interval: 2000,
needAddress: true,
onceLocation: false,
onceLocationLatest: false,
locationProtocol: LocationProtocolEnum.HTTP,
sensorEnable: false,
wifiScan: true,
locationCacheEnable: true
}, iosOption: {
desiredAccuracy: DesiredAccuracyEnum.kCLLocationAccuracyBest,
pausesLocationUpdatesAutomatically: 'YES',
allowsBackgroundLocationUpdates: 'NO',
locationTimeout: 10,
reGeocodeTimeout: 5,
}
};
const positionRes: PositionRes = await this.gaoDeLocation.getCurrentPosition(positionOptions).catch((e: any) => {
console.log(e);
}) || null;
console.log(JSON.stringify(positionRes));
}
startSerialLocation() {
const positionOptions: PositionOptions = {
androidOption: {
locationMode: LocationModeEnum.Hight_Accuracy,
gpsFirst: false,
HttpTimeOut: 30000,
interval: 2000,
needAddress: true,
onceLocation: false,
onceLocationLatest: false,
locationProtocol: LocationProtocolEnum.HTTP,
sensorEnable: false,
wifiScan: true,
locationCacheEnable: true
}, iosOption: {
desiredAccuracy: DesiredAccuracyEnum.kCLLocationAccuracyBest,
pausesLocationUpdatesAutomatically: 'YES',
allowsBackgroundLocationUpdates: 'NO',
locationTimeout: 10,
reGeocodeTimeout: 5,
}
};
this.gaoDeLocation.startSerialLocation(positionOptions).subscribe((positionRes: PositionRes) => {
console.log(JSON.stringify(positionRes));
});
}
stopSerialLocation() {
const positionRes: any = this.gaoDeLocation.stopSerialLocation().catch((e) => {
console.log(e);
}) || null;
console.log(JSON.stringify(positionRes));
}
}
```
#### 7.联系我:QQ群 390736068
#### 8.插件调用方式已经传到ionic官网 (官网对应的插件版本 2.0.5 )
[ionic官网快捷链接](https://ionicframework.com/docs/native/gao-de-location)