更新时间:2020年03月10日
简介
调用接口时,请参照以下接口说明。一般情况下,在需要获取定位信息的位置,按1-2-3-4-6的顺序调用即可获取;不需要定位时,调用接口5即可停止定位。注意:接口1和2需要在程序初始化时调用,避免发生获取不到定位信息的情况。
1定位权限动态申请
void requestPermission()
2设置iOS端AK
Future<bool> setApiKey(String key)
3准备定位,配置Android端和iOS端定位参数
void prepareLoc(Map androidMap, Map iosMap)
将您所设置的Android端和iOS端定位参数以键值对map形式传递到原生端对外接口中。Android端和iOS端目前支持设置以下定位参数:
1. Android端
BaiduLocationAndroidOption androidOption = new BaiduLocationAndroidOption(); androidOption.setCoorType("bd09ll"); /// 可选,设置返回经纬度坐标类型,默认gcj02 /// gcj02:国测局坐标; /// bd09ll:百度经纬度坐标; /// bd09:百度墨卡托坐标; /// 海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标 androidOption.setIsNeedAltitude(true); /// 可选,设置是否需要返回海拔高度信息,true为需要返回 androidOption.setIsNeedAddres(true); /// 可选,设置是否需要返回地址信息,true为需要返回 androidOption.setIsNeedLocationPoiList(true); /// 可选,设置是否需要返回周边poi信息,true为需要返回 androidOption.setIsNeedNewVersionRgc(true); /// 可选,设置是否需要返回新版本rgc信息,true为需要返回 androidOption.setIsNeedLocationDescribe(true); /// 可选,设置是否需要返回位置描述信息,true为需要返回 androidOption.setOpenGps(true); /// 可选,设置是否需要使用gps,true为需要使用 androidOption.setLocationMode(LocationMode.Hight_Accuracy); /// 可选,设置定位模式,可选的模式有高精度、低功耗、仅设备,默认为高精度模式,可选值如下: /// 高精度模式: LocationMode.Hight_Accuracy /// 低功耗模式:LocationMode.Battery_Saving /// 仅设备(Gps)模式:LocationMode.Device_Sensors androidOption.setScanspan(1000); /// 可选,设置发起定位请求的间隔,int类型,单位ms /// 如果设置为0,则代表单次定位,即仅定位一次,默认为0 /// 如果设置非0,需设置1000ms以上才有效 androidOption.setLocationPurporse(BDLocationPurpose.SignIn); /// 可选,设置场景定位参数,包括签到场景、运动场景、出行场景,可选值如下: /// 签到场景: BDLocationPurpose.SignIn /// 运动场景: BDLocationPurpose.Transport /// 出行场景: BDLocationPurpose.Sport Map androidMap = androidOption.getMap();
2. iOS端
BaiduLocationIOSOption iosOption = new BaiduLocationIOSOption(); iosOption.setIsNeedNewVersionRgc(true); /// 可选,设置是否需要返回新版本rgc信息,true为需要返回 iosOption.setBMKLocationCoordinateType("BMKLocationCoordinateTypeBMK09LL"); /// 可选,设置返回位置的坐标系类型 ,参数为String类型,可选值如下: /// "BMKLocationCoordinateTypeBMK09LL" 百度经纬度坐标 /// "BMKLocationCoordinateTypeBMK09MC" 百度墨卡托坐标 /// "BMKLocationCoordinateTypeWGS84" gps坐标 /// "BMKLocationCoordinateTypeGCJ02" 国测局坐标 iosOption.setActivityType("CLActivityTypeAutomotiveNavigation"); /// 可选,设置应用位置类型,参数为String类型,可选值如下: /// "CLActivityTypeOther" /// "CLActivityTypeAutomotiveNavigation" /// "CLActivityTypeFitness" /// "CLActivityTypeOtherNavigation" iosOption.setDesiredAccuracy("kCLLocationAccuracyBest"); /// 可选,设置期望定位精度,参数为String类型,可选值如下: /// "kCLLocationAccuracyBest" /// "kCLLocationAccuracyNearestTenMeters" /// "kCLLocationAccuracyHundredMeters" /// "kCLLocationAccuracyKilometer" iosOption.setLocationTimeout(10); /// 可选,设置位置获取超时时间,参数为int类型 iosOption.setReGeocodeTimeout(10); /// 可选,设置获取rgc信息超时时间,参数为int类型 iosOption.setPauseLocUpdateAutomatically(true); /// 可选,指定定位是否会被系统自动暂停,参数为bool类型 /// true表示定位会被系统自动暂停,false表示不会 iosOption.setAllowsBackgroundLocationUpdates(true); /// 可选,设置是否允许后台定位,参数为bool类型 /// true表示允许后台定位,false表示不允许后台定位 iosOption.setDistanceFilter(10); /// 可选,设置定位的最小更新距离,参数为double类型
4启动定位
void startLocation()
5停止定位
void stopLocation()
6原生端以键值对map的形式回传定位结果到Flutter端
Stream<Map<String, Object>> onResultCallback()
键值参数说明
Key名称 | 类型 | 描述 |
---|---|---|
|
|
定位结果类型 (仅Android端会返回) |
|
|
定位成功时间 |
|
|
定位结果回调时间 |
|
|
纬度 |
|
|
经度 |
|
|
高度 |
|
|
定位精度 |
|
|
国家 |
|
|
省份 |
|
|
城市 |
|
|
区县 |
|
|
乡镇 |
|
|
街道 |
|
|
地址 |
|
|
位置语义化描述 (仅Android端会返回),例如“在百度大厦附近” |
|
|
周边POI信息列表,每个POI信息之间用“|”隔开 |
|
|
定位结果错误码,请参照Android错误码及iOS错误码 |
|
|
定位失败描述信息 |