最新Android百度地图3.4.x的使用
来源:互联网 发布:勤智数码 大数据 编辑:程序博客网 时间:2024/05/16 05:17
最近碰到一个跟地图有关系的业务,很早之前到是用过百度地图还是1.x 今天去用发现已经不能使用了,查看百度API发现已经都改了,到网上去查新版的地图使用结果
发现全部都是以前的版本,看来想偷懒是不可能,只能自己去看文档来写了。
官方的文档:http://developer.baidu.com/map/index.php 根据需要去下载对应的SDK(我这里只用地图和定位)
根据官方的开发步骤,在自己的工程里 导入需要的jar文件和so文件即可。
同时需要申请key,具体过程请看官方指导很详细,这里就不再啰嗦。
今天要完成的功能是定位和实现在地图上的线路规划(步行)
1 定位:
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="步行线路" android:onClick="start_line" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="定位" android:onClick="start_location" /> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/padding_medium" android:text="@string/hello_world" /></LinearLayout>
<!-- 引入百度地图组件 参考官方例子-->
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /></LinearLayout>
根据需要就直接在界面上加入了百度的地图组件 MapView .
先说明下我们会使用到的几个东西:
private MapView baidum = null ;//地图显示组件
private BaiduMap mBaiduMap = null ;//百度地图对象
private LocationClient locationc = null ;//定位客户端
private boolean isFirstLoc = true ;//是否是第一次定位
private RoutePlanSearch mSearch =null ; //poi搜索(步行规划需要)
//还需要对应的定位监听和步行规划监听 2个对象,在后面给出
private BDLocationListener location_listener = null;//定位监听
下面给出代码:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); // baidum = (MapView)findViewById(R.id.bmapView); mBaiduMap = baidum.getMap();//获取地图对象// 开启定位图层mBaiduMap.setMyLocationEnabled(true); locationc = new LocationClient(this); location_listener = new MyLocationListener();//定位监听实现类 locationc.registerLocationListener(location_listener);//注册监听 }
默认一开始地图会显示京城为默认显示地图,所以这里我用一个按钮来切换到当前自己的 位置:
public void start_location(View v){ //按钮事件 LocationClientOption option = //定位参数设置,参考官方 new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(5*60*1000);//定位的频率(ms)locationc.setLocOption(option);locationc.start();//开始定位,定位成功会回调监听 }
监听对象的实现,需要实现定位监听接口:
class MyLocationListener implements BDLocationListener{@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null || baidum == null){return;}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(0).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());//设置定位显示模式为:跟随(会有个箭头)、普通、指南针三种mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(LocationMode.FOLLOWING,true,null));MapStatusUpdate u1 = MapStatusUpdateFactory.zoomTo(17);//定位目标时放到到17倍mBaiduMap.setMapStatus(u1);//MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);//定位到的坐标mBaiduMap.animateMapStatus(u);//动画显示到目标位置,也就是自己的手机所在地}TextView tv = (TextView)findViewById(R.id.tv);tv.setText("经纬度:"+location.getLongitude() + " : " + location.getLatitude());} }
部署到手机,运行,打开GPS和网络 基本就可以实现了(注意,需要在清单里加入所必须的内容和所需的权限在后面给出,如果是空白网格 key错误的可能性比较大)
下面给出步行规划的实现(按钮完成):
public void start_line(View v){ //参考官方包: com.baidu.mapapi.search.route mSearch = RoutePlanSearch.newInstance();//实例化 路径规划搜索接口 mSearch.setOnGetRoutePlanResultListener(rlistener);//规划监听 WalkingRoutePlanOption option = new WalkingRoutePlanOption() ;//步行规划对象 PlanNode start = PlanNode.withCityNameAndPlaceName("长沙", "林科大"); //起点 PlanNode end = PlanNode.withCityNameAndPlaceName("长沙", "五一广场");//终点 option.from(start); option.to(end); if(mSearch.walkingSearch(option)){ Toast.makeText(getApplicationContext(), "步行线路完成", Toast.LENGTH_SHORT).show(); } }
路径搜索监听:
OnGetRoutePlanResultListener rlistener = new OnGetRoutePlanResultListener() {@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult result) {//步行规划结果 List<WalkingRouteLine> all_lines = result.getRouteLines(); if(all_lines!=null){ for(WalkingRouteLine line : all_lines){ //步行规划覆盖层: WalkingRouteOverlay wo = new WalkingRouteOverlay(mBaiduMap); wo.setData(line); wo.addToMap();//添加到地图 wo.zoomToSpan();//缩放到合适大小显示整个线路 } }}@Overridepublic void onGetTransitRouteResult(TransitRouteResult arg0) {//公交}@Overridepublic void onGetDrivingRouteResult(DrivingRouteResult arg0) {//驾车}};
到此已经能完整的显示结果了。
附权限(都可以从官网上提示获取):
<!-- 这个权限用于进行网络定位--><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"/><uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
需要在清单里写的内容(详情参考官方说明):
在<application>里写入:
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你自己程序的key" />
还有这个:
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" />
Ok。去试试吧!小东西,大神无视吧……
源码下载,打了那么多字支持下吧
- 最新Android百度地图3.4.x的使用
- Android如何使用最新版本百度地图地图 SDK v4.2.1(一)的API
- 最新百度地图_android使用
- Android 百度地图的使用
- Android百度地图的使用
- Android百度地图的使用
- 百度地图最新版本sdk使用系列(二)-修改百度地图的默认中心位置
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Android百度地图使用
- Android百度地图使用
- Android百度地图使用
- Android 百度地图使用
- android中关于百度地图的使用
- android中关于百度地图的使用
- Android上面的百度地图使用步骤
- Android上面的百度地图使用步骤
- android开发中百度地图的使用
- Android项目框架搭建 (分析需求、整理资料)
- ZOJ 3872 Beauty of Array&&ZOJ 3870 Team Formation
- Win7下安装Windows SDK
- oracle函数编写
- Android之:View的setTag()与getTag()方法使用
- 最新Android百度地图3.4.x的使用
- C++ STL基本容器的使用
- Centos下安装pip的简便方法
- 跨平台移动开发phonegap/cordova 3.3全系列教程-开发环境搭建
- eclipse快捷键大全
- php打水印图片
- java poi 操作excel,xssf 读excel 2007,将某些单元格为固定值
- OpenGL轨迹球代码
- xml布局文件报错,clean时导致R文件消失