百度地图 实现检索时不清除定位标注
2016-11-24 15:18
253 查看
导入SDK网上有很多此处不加赘述
注:最新版SDK没有PoiOverlay类资源下载 http://download.csdn.net/detail/m18860232520/9692479
1.实现检索
百度开发文档 URL= http://lbsyun.baidu.com/index.php?title=androidsdk/guide/retrieval部分如下:
在POI检索监听方法中调用 onPoiResult()方法 即可添加检索结果的标注
/** * 添加检索 标注 * @param result */ public void onPoiResult(PoiResult result) { if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) { return; } if (result.error == SearchResult.ERRORNO.NO_ERROR) { mBaiduMap.clear(); //创建PoiOverlay PoiOverlay overlay = new MyPoiOverlay(mBaiduMap); //设置overlay可以处理标注点击事件 mBaiduMap.setOnMarkerClickListener(overlay); //设置PoiOverlay数据 overlay.setData(result); //添加PoiOverlay到地图中 overlay.addToMap(); overlay.zoomToSpan(); return; } }
2. 百度定位
(1).按照百度文档进行配置权限<!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
(2).初始化LocationClient类
public LocationClient mLocationClient = null; public BDLocationListener myListener = new MyLocationListener(); public void onCreate() { mLocationClient = new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener( myListener ); //注册监听函数 }
(2).配置SDK定位参数
private void initLocation() { LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy );//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系 int span = 2000; option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要 option.setOpenGps(true);//可选,默认false,设置是否使用gps option.setLocationNotify(true);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果 option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集 option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要 mLocationClient.setLocOption(option); }
(4).实现BDLocationListener接口
public class MyLocationListener implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation bdLocation) {
setLocation(location);}}
(5).接口中调用方法
/** * 设置定位信息 定位图层 定位数据 检索时定位覆盖物不会消失 * @param location */ private void setLocation(BDLocation location) { mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(0).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标) BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory .fromResource(R.mipmap.icon_mark); setDingWei(location); MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, mCurrentMarker); mBaiduMap.setMyLocationConfigeration(config); // 当不需要定位图层时关闭定位图层 // mBaiduMap.setMyLocationEnabled(false); //关闭定位监听 mLocationClient.stop(); } /** * 设置定位显示在当前位置以及放大级别(3—18) * * @param location */ private void setDingWei(BDLocation location) { LatLng point = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate mapStatus = MapStatusUpdateFactory.newLatLngZoom(point, 14); mBaiduMap.setMapStatus(mapStatus); }
如有不足请大家不要手下留情! 多多交流
相关文章推荐
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- iOS百度地图 定位的实现
- 百度地图使用教程(二)-------- 定位实现
- Android集成百度地图接口,实现定位+路径规划。新手教程
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- 百度地图android版 自我定位实现
- 百度地图之---定位实现 并显示定位结果地图
- 给图片各个位置做标记,实现类似百度地图的标记功能(动态创建页面元素,各种定位,Ajax,MVC)
- iOS百度地图 定位的实现
- 通过百度地图实现定位并获取本地当日天气信息
- android 百度地图定位功能实现
- [转贴]JAVA 百度地图SDK地图学习——实现定位功能
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Android应用之——百度地图最新SDK3.0应用,实现最常用的标注覆盖物以及弹出窗覆盖物
- 百度地图定位写在Service里实现
- 百度地图开发--实现打开地图自动定位到上次定位点然后在定位到自己的位置
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- iOS百度地图 定位的实现
- Arcgis andoid开发之应用百度地图接口实现精准定位与显示
- 百度地图(SDK v3.1.1)和百度定位(SDKv4.2)的实现!