百度地图显示轨迹
来源:互联网 发布:僵尸新娘 配乐 知乎 编辑:程序博客网 时间:2024/04/27 18:05
一、实现方式
使用的是3.0+最新版的百度地图。实现的步骤首先是实现定位功能,之后使用百度的图层将这些点画到地图上,最后将这些点连成线。
其它各种功能官方Demo里都有!
二、实现过程
1.下载开发包
使用百度地图首先需要根据功能下载开发包。可以在这里下载:http://lbsyun.baidu.com/sdk/download,我选择的是基础地图和定位功能。
2.申请密钥
下载完成后需要申请密钥,这里要注意,当在其它电脑上编译同个程序时,这个密钥就没用了,需要重新申请密钥,因为密钥需要SHA1值,不同电脑这个值不一样!
这是我下载的项目:
3.编写代码
1)先要将密钥填到AndroidManifest.xml文件里。
2)在LocationDemo.java文件上写代码。
LocationDemo这个文件实现了定位功能,我们只需要将标记图层加上去就行了。
/** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); if (isFirstLoc) {//第一次位置 isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(14.0f); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); mBaiduMap.addOverlay(getStartMarkerOptions(ll.latitude, ll.longitude)); locationFirstLat = ll.latitude; locationFirstLng = ll.longitude; }else{ double lat = location.getLatitude(); double lng = location.getLongitude(); Toast.makeText(LocationDemo.this, lat+";"+lng, Toast.LENGTH_SHORT).show(); if(lat != locationFirstLat && lng != locationFirstLng){//不是开始位置 if(lat != locationLatBefore && lng != locationLngBefore){//是新位置,加到地图上 //加点 mBaiduMap.addOverlay(getDefaultMarkerOptions(location.getLatitude(), location.getLongitude())); //连线 LatLng p1 = new LatLng(locationLatBefore, locationLngBefore); LatLng p2 = new LatLng(lat, lng); List<LatLng> points = new ArrayList<LatLng>(); points.add(p1); points.add(p2); OverlayOptions ooPolyline1 = new PolylineOptions().width(10) .color(0xAAFF0000).points(points); mBaiduMap.addOverlay(ooPolyline1); } } } locationLatBefore = location.getLatitude(); locationLngBefore = location.getLongitude(); } public void onReceivePoi(BDLocation poiLocation) { } }
这里我们在位置回调函数里实现画点线。为了实现点的不重复绘制,做了控制,如果是新点就加入图层,并和之前点连成线。
在初始化地图的时候可以做些设置,让他每一分钟获取下地址
// 地图初始化
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
int span = 1*60*1000;//一分钟发一次定位
option.setScanSpan(span);//可选,默认0
mLocClient.setLocOption(option);
mLocClient.start();
如果需要添加其它功能,只要将其它文件的功能整合下就行了。
最后附张效果图
- 百度地图显示轨迹
- 百度地图--实时显示轨迹
- 轨迹回放 百度地图
- 百度地图轨迹绘制
- 百度地图 - 轨迹回放
- 百度地图显示历史轨迹时经纬度的处理方法
- 百度地图——显示小车轨迹动画回放
- 百度地图运行轨迹根据车速显示不同颜色线
- 百度地图车辆运动轨迹
- 百度地图轨迹动态展示
- android 百度地图轨迹回放
- 百度地图 多轨迹 示例
- 百度地图轨迹回放代码
- Android百度地图轨迹回放
- 百度地图canvas自定义轨迹
- 百度地图绘制轨迹点
- 百度地图 历史轨迹播放
- 百度地图显示多个坐标并连线显示用户轨迹
- 消息队列 ActiveMQ
- 互联网+颠覆还是被颠覆(读书笔记)
- Android开发工具下载及Android开源代码整理下载地址
- java项目映射到外网
- 在Ubuntu14.04上配置nginx和fastcgi程序
- 百度地图显示轨迹
- Unity3D学习笔记(九)模型导入
- Kryo 为什么比 Hessian 快
- HUST 1372 marshmallow
- VFW 介绍
- 【CSS3】:enabled选择器
- js 删除append标签添加的元素
- 易联云打印资料整理
- Android更新UI的2种方法