为 react-native 桥接的百度定位 SDK,由 react-native-baidu-location 改进而来,原来的库运行会报错,主要工作是增加了 API,以及升级 SDK 版本,时间问题保留了原库的一些代码逻辑。
- Android SDK v7.5
- IOS SDK v3.0
npm install react-native-gm-baidu-location
react-native link react-native-gm-baidu-location
-
在
AndroidManifest.xml文件中,正确填写 AK<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者申请的AK" > </meta-data> </application>
-
在
AndroidManifest.xml中声明定位 service<application> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> </application>
-
在
AndroidManifest.xml添加所需权限注意:针对Android 6.0 以上设备,定位等敏感权限还需要动态获取,见 PermissionsAndroid
<manifest> <!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> </manifest>
| API | Param | Description | iOS | Android |
|---|---|---|---|---|
init |
- | 初始定位实例 | ❌ | ✅ |
setLocationOption |
{} |
设置定位参数,详见:setLocationOption | ❌ | ✅ |
startLocation |
- | 开始定位 | ✅ | ✅ |
restartLocation |
- | 重新获取定位 | ❌ | ✅ |
stopLocation |
- | 停止定位 | ✅ | ✅ |
enableLocInForeground |
- | 保持后台定位,详见:Android 后台定位限制 | ❌ | ✅ |
didUpdateBMKUserLocation |
func |
定位刷新回调 | ✅ | ✅ |
didStopLocatingUser |
func |
停止定回调 | ✅ | ✅ |
didFailToLocateUserWithError |
func |
定位失败回调 | ✅ | ✅ |
-
optionfield type description coorType Str 可选,设置返回经纬度坐标类型,默认gcj02
gcj02:国测局坐标;
bd09ll:百度经纬度坐标;
bd09:百度墨卡托坐标;
海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标scanSpan Num 可 选,设置发起定位请求的间隔,int类型,单位ms openGps Bool 可选,设置是否使用gps,默认false ignoreKillProcess Bool 设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true) isNeedAddress Bool 可选,设置是否需要地址信息,默认不需要 isNeedLocationDescribe Bool 可选,默认false,设置是否需要位置语义化结果
import BaiduLocation from 'react-native-baidu-location';
BaiduLocatioin.init();
BaiduLocation.setLocationOption({
scanSpan: 5000
});
BaiduLocation.startLocation();
BaiduLocation.restartLocation();
BaiduLocation.stopLocation();
BaiduLocation.enableLocInForeground();
BaiduLocation.didUpdateBMKUserLocation(param => {
console.log(param);
});
BaiduLocation.didStopLocatingUser(param => {
console.log(param);
});
BaiduLocation.didFailToLocateUserWithError(param => {
console.log(param);
});