0.0.3 • Published 7 years ago

fhamap_location v0.0.3

Weekly downloads
1
License
MIT
Repository
-
Last release
7 years ago

高德地图定位

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.**