滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
2017-10-13 14:32
871 查看
最近闲的没事干,发现滴滴出行的app,地图上的小汽车可以跑,很炫是不是,我们公司也是做车辆监控的app的,我就一直揣摩着怎么也让我们的小汽车在地图上跑来跑去啊,这样给人感觉好点,废话不说了,先看下滴滴出行的界面;
1.我们的gps数据是车辆10秒上报一次位置数据;前端请求数据获取当前最新的gps位置;
2.第一次请求到数据后我把所有的车辆先标记到地图上,高德地图有标记方法;
3.标记到地图上以后,需要把marker存放到list记录下来(为了更新移动使用);
4.当再次请求道新的gps数据的时候,我们需要平滑的移动到最新的位置,关键问题是再这里;怎么样在才能平滑移动呢,无非就是需要不断的移动从当前位置到最新的位置,这里就当时从A点移动到B点,无非就是marker.setPosition(),不断的调用知道B点,
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
5,最后需要说明的是,大家问平均获取的中间点这样获取到底对不对,我告诉你确切的说是不准确的,但是在10秒每次上报的数据之间来这样算是没错的;具体大家可以测下下就知道了,稍后再上了例子好了
1.我们的gps数据是车辆10秒上报一次位置数据;前端请求数据获取当前最新的gps位置;
2.第一次请求到数据后我把所有的车辆先标记到地图上,高德地图有标记方法;
3.标记到地图上以后,需要把marker存放到list记录下来(为了更新移动使用);
4.当再次请求道新的gps数据的时候,我们需要平滑的移动到最新的位置,关键问题是再这里;怎么样在才能平滑移动呢,无非就是需要不断的移动从当前位置到最新的位置,这里就当时从A点移动到B点,无非就是marker.setPosition(),不断的调用知道B点,
List<Marker> markersMap = new ArrayList(Marker);//存放地图上标记marker private void addMarkToMap(List<MarkerCarOptions> markerCarOptions){ if(markersMap.size()!=0){ //markersMap不为空,说明是更新marker for (Marker marker : markersMap) { for (MarkerCarOptions options : markerCarOptions) { if(marker.getObject().equals(options.car.getBusid())){ moverCar(marker, options); break; } } } } /** * 更新地图车辆位置 * @param markerCarOptions */ private void moverCar(final Marker marker,final MarkerCarOptions options){ //1,获取到起点到终点的点,默认绘制4个点,最后一个为终点 final List<LatLng> roads = new ArrayList<LatLng>(); LatLng startLatLng = marker.getPosition();//小车当前位置 LatLng endLatLng = options.markerOptions.getPosition();//终点位置 LatLng latLng_2 = new LatLng((startLatLng.latitude+endLatLng.latitude)/2, (startLatLng.longitude+endLatLng.longitude)/2); LatLng latLng_1 = new LatLng((startLatLng.latitude+latLng_2.latitude)/2, (startLatLng.longitude+latLng_2.longitude)/2); LatLng latLng_3 = new LatLng((latLng_2.latitude+endLatLng.latitude)/2, (latLng_2.longitude+endLatLng.longitude)/2); roads.add(latLng_1); roads.add(latLng_2); roads.add(latLng_3); roads.add(endLatLng); Thread t =new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { for (int i = 0; i < roads.size(); i++) { marker.setPosition(roads.get(i)); Thread.sleep(200); } marker.setIcon(options.markerOptions.getIcon()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }); t.start(); }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
5,最后需要说明的是,大家问平均获取的中间点这样获取到底对不对,我告诉你确切的说是不准确的,但是在10秒每次上报的数据之间来这样算是没错的;具体大家可以测下下就知道了,稍后再上了例子好了
相关文章推荐
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
- Android 滴滴打车,打车软件客户端实现小车在地图上平滑移动的实现;基于高德地图V4.1.1+
- 类似滴滴打车,多辆小车在地图上平滑移动的实现,基于百度地图实现(无轨迹)
- 类似滴滴打车,多辆小车在地图上平滑移动的实现,基于百度地图实现(轨迹已画好)
- 类似滴滴打车,多辆小车在地图上平滑移动的实现,基于百度地图实现(无轨迹)
- 实现开启和关闭android移动网络(做AppWidget开发的收获)
- Android基于mAppWidget实现手绘地图(十一)–移动地图到某个坐标
- Android 游戏开发之主角的移动与地图的平滑滚动(七)
- android开发游记:APP内部调启百度、高德、web地图导航
- Android游戏开发之主角的移动与地图的平滑滚动
- QuickTV:一款基于AndroidQuick快速开发框架实现的直播APP
- Android 游戏开发之主角的移动与地图的平滑滚动
- Android开发 PopupWindow弹窗调用第三方地图(百度,高德)实现导航功能
- Android开发之高德地图实现定位
- Android 游戏开发之主角的移动与地图的平滑滚动
- iOS版移动和地图与高德地图差异化开发实现
- Android 游戏开发之主角的移动与地图的平滑滚动(十五)
- (转)Android 游戏开发之主角的移动与地图的平滑滚动(十五)
- 实现开启和关闭Android移动网络(做AppWidget开发的收获)
- Android开发之高德地图实现定位