百度sdk实现仿美团、饿了么选择收货地址,带搜索及poi检索列表
首先去百度开放平台申请应用AK,然后放入自己的项目中。
android:name="com.baidu.lbsapi.API_KEY"
android:value="kGaoZOpl7hCvKqsN3xpz432Zfzyqtxlp" />
导入百度sdk的引用资源
具体资源可以从demo里面下载
配置定位及检索需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<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.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
在自定义application初始化
SDKInitializer.initialize(this)
SDKInitializer.setCoordType(CoordType.BD09LL)
直接代码实现
- 动态获取定位需要的权限,开始定位
mLocationClient = LocationClient(applicationContext)
mLocationClient!!.registerLocationListener(MyLocationListener())
val option = LocationClientOption()
option.locationMode = LocationClientOption.LocationMode.Hight_Accuracy
option.setIsNeedAddress(true)
option.setIsNeedLocationPoiList(true)
option.isOpenGps = true
mLocationClient!!.locOption = option
实现定位监听,并初始化地图显示出界面
private inner class MyLocationListener : BDLocationListener {
override fun onReceiveLocation(location: BDLocation) {
//获取定位结果
if (!TextUtils.isEmpty(location.city)) {
mLatLng = LatLng(location.latitude, location.longitude)
initData(location.latitude, location.longitude)
mSelectCity = location.city
if (mSelectCity.endsWith("市")) {
mSelectCity = mSelectCity.substring(0, mSelectCity.length - 1)
}
tv_city.text=location.city
mLocationClient!!.stop()
} else {
doLocation()
mLocationClient!!.start()
}
}
}
- 初始化地图并监听手指滑动回调