npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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