fhamap_location
v0.0.3
Published
amap location for react native
Downloads
2
Readme
高德地图定位
1 初始化方法
方法名:init
参数:options
- iOS:
{ distanceFilter:(double)//设定定位的最小更新距离。默认为 kCLDistanceFilterNone desiredAccuracy:(double)//设定定位精度。默认为kCLLocationAccuracyBest pausesLocationUpdatesAutomatically:(BOOL)//指定定位是否会被系统自动暂停。默认为YES allowsBackgroundLocationUpdates:(BOOL)//是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。 locationTimeout:(int)//指定单次定位超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。 reGeocodeTimeout:(int)//指定单次定位逆地理超时时间,默认为5s。最小值是2s。注意单次定位请求前设置。 locatingWithReGeocode:(BOOL)//连续定位是否返回逆地理信息,默认NO。 onceLocatingWithReGeocode:(BOOL)//单次定位是否返回逆地理信息,默认NO。 }
- Android:
{ // 设置定位模式(常量) // locationMode.batterySaving低功耗模式 // locationMode.deviceSensors仅设备(Gps)模式,不支持室内环境的定位 // locationMode.hightAccuracy高精度模式(默认值) locationMode : String 常量 // 设置首次定位是否等待GPS定位结果 // 默认值:false // 只有在单次定位高精度定位模式下有效 // 设置为true时,会等待GPS定位结果返回,最多等待30秒,若30秒后仍无GPS结果返回,返回网络定位结果 isGpsFirst : boolean // 设置发起定位请求的时间间隔 // 单位:毫秒 // 默认值:2000毫秒 interval : int // 设置退出时是否杀死进程 // 默认值:false, 不杀死 // 注意:如果设置为true,并且配置的service不是remote的则会杀死当前页面进程,请慎重使用 isKillProcess : boolean // 设置联网超时时间 // 单位:毫秒 // 默认值:30000毫秒 httpTimeOut : int // 设置是否使用缓存策略, 默认为true 使用缓存策略 isLocationCacheEnable : boolean // 设置定位协议(常量) // locationProtocol.http http协议 // locationProtocol.https https协议 locationProtocol : String 常量 // 设置是否允许模拟位置, 默认为false isMockEnable : boolean // 设置单次定位是否等待WIFI列表刷新 仅适用于单次定位,当设置为true时,连续定位会自动变为单次定位,定位精度会更高,但是定位速度会变慢1-3秒 isOnceLocationLatest : boolean // 设置是否使用设备传感器 默认值:false 不使用设备传感器 sensorEnable : boolean // 设置是否允许调用WIFI刷新 默认值为true,当设置为false时会停止主动调用WIFI刷新,将会极大程度影响定位精度,但可以有效的降低定位耗电 isWifiPassiveScan : boolean // 设置是否返回地址信息,默认返回地址信息 // 默认值:false, 返回地址信息 isNeedAddress:boolean }
2 设置定位参数
- 方法名:setOptions
- 参数:options
- 具体参数参考1
3 开始连续定位或单次定位
- 方法名:start
- 参数:isOnce (BOOL) //true 单次,false 持续。
4 停止连续定位
- 方法名:stop
- 参数:无
5 清空释放定位
- 方法名:cleanUp
- 参数:无
6 单次或持续定位回调,通过RN的NativeEventEmitter实现。
方法名:'fhamap.location.onLocationChanged'
参数:{} NativeEventEmitter回调
result:{//正确结果 location: { latitude: (double)//纬度 longitude: (double)//经度 altitude: (double)//海波 course: (double) //方向0~360,0 being true North speed: (double)//速度 timestamp: //时间戳(10位) floor: // ios 特有 horizontalAccuracy: (double)//水平精度 verticalAccuracy: (double)//垂直精度 // android 特有 accuracy:(double)//精度 locationType:(int)//定位结果来源 locationDetail:(String)//定位信息描述 provider:(String)//定位提供者 satellites:(int)//当前提供定位服务的卫星个数,仅在GPS定位时有效 }, reGeocode: { formattedAddress: (String)//格式化地址 country: (String)//国家 province: (String)//省/直辖市 city: (String)//市 district: (String)//区 citycode: (String)//城市编码 adcode: (String)//区域编码 street: (String)//街道名称 number: (String)//门牌号 poiname: (String)//兴趣点名称 aoiname: (String)//所属兴趣点名称 // android 特有 buildingid:(String)//返回支持室内定位的建筑物ID信息 } } result:{//错误结果 error: { errorCode: (int)//错误码 errorInfo: (Sting)//错误信息 } }
7 获取最新的定位信息
- 方法名:getLatestLocation
- 参数: promise回调
- 具体参数参考6
8 根据经纬度获地理信息
- 方法名:loadReGeocodeWithCoordinate
- 参数:(lat, lng, promise )经纬度和结果回调
- 具体参数参考6
9 获取当前地理信息
- 方法名:loadCurrentReGeocode
- 参数: promise回调
- 具体参数参考6
10、使用方法
- npm install
- npm install <fhamap_location本地路径>
Android
- 在app的build.gradle中引入
compile project(':fhamap_location')
- 在工程下的settings.gradle中引入
include ':fhamap_location'
project(':fhamap_location').projectDir = new File(rootProject.projectDir, '../node_modules/fhamap_location/android')
- 在工程下的build.gradle中引入
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
...
}
}
- AndroidManifest.xml
<!--*************************高德地图-定位所需要权限*************************-->
<!-- Normal Permissions 不需要运行时注册 -->
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<!-- 请求网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 不是SDK需要的权限,是示例中的后台唤醒定位需要的权限 -->
<!--<uses-permission android:name="android.permission.WAKE_LOCK" />-->
<!-- 需要运行时注册的权限 -->
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于提高GPS定位速度-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--读取缓存数据-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 更改设置 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--*************************高德地图-定位所需要权限*************************-->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你的apikey"/>
<!--高德地图APS服务设置-可选->
<service android:name="com.amap.api.location.APSService" android:process=":remote">
</service>
- 混淆文件
#=====================AMap=====================
#如果报出 warning,在报出 warning 的包加入类似的语句:-dontwarn 包名
#3D 地图
-keep class com.amap.api.mapcore.**{*;}
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
#定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
#搜索
-keep class com.amap.api.services.**{*;}
#2D地图
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}
#导航
-keep class com.amap.api.navi.**{*;}
-keep class com.autonavi.**{*;}
-dontwarn com.amap.api.services.**
-dontwarn com.amap.api.mapcore2d.**