日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

仿滴滴首页车辆随机平滑移动,基于高德地图

發布時間:2024/3/13 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仿滴滴首页车辆随机平滑移动,基于高德地图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????之前就想做個仿滴滴首頁車輛平滑移動的效果,但是一直沒有時間。最近翻看舊項目的時候又看到這個需求,想了想還是花點時間做一下吧。先上效果圖。 源碼在文章結尾 ??

先是滴滴的效果圖 ?

??

再然后是demo的效果圖

????????首先當然是用大百度搜搜看,有沒有類似的效果,結果首先發現了這個博主的文章,粗略看了一下,只是簡單的實現了一次車輛的平滑移動,達不到要求。于是就在他的Demo上繼續修改。看網上有些人說車輛的位置信息是滴滴從服務端返回回來的真實坐標,我看了一下滴滴的效果,感覺應該不是,因為有的車輛都已經橫穿建筑物,連跨海的都有,應該是隨機生成的坐標。

1、確定平滑移動的范圍

????????隨機生成的車輛坐標需要在指定的范圍內,肯定不能說讓車輛在地圖上到處跑。那怎么判斷生成的坐標在指定范圍內呢?這時候我們可以考慮用指定坐標為圓心,指定半徑范圍內畫圓,把這個圓范圍內的坐標當成可用坐標,然后調用高德的方法mCircle.contans()來判斷生成的坐標是否在指定范圍內來區分。

/*** 生成以中心點附近指定radius內的坐標數組** @param startLatLng 起點坐標* @return*/private ArrayList<LatLng> randomGenerateLatLngs(LatLng startLatLng) {ArrayList<LatLng> latLngs = new ArrayList<>();latLngs.add(startLatLng);double lat = centerLatLng.latitude;double lng = centerLatLng.longitude;for (int i = 0; i < 50; i++) {double newLat = lat + (10 - (Math.random() * 20)) / Math.pow(10, new Random().nextInt(3) + 1);double newLng = lng + (10 - (Math.random() * 20)) / Math.pow(10, new Random().nextInt(3) + 1);LatLng newLatLng = new LatLng(newLat, newLng);if (mCircle.contains(newLatLng)) {latLngs.add(newLatLng);}}// 如果隨機生成的數組個數為0,則再隨機添加一個距離中心點更近的坐標if (latLngs.size() == 1) {latLngs.add(new LatLng(lat + (Math.random() > 0.5 ? 1 : -1) / Math.pow(10, 3), lng + (Math.random() > 0.5 ? 1 : -1) / Math.pow(10, 3)));}return latLngs;}

PS:請忽略生成隨機坐標的完美性,本文主要以實現功能效果為主。

當生成的坐標已經平移完后,我們需要繼續生成坐標

smoothMarker.setMoveListener(new MySmoothMoveMarker.MoveListener() {@Overridepublic void move(double v) {}@Overridepublic void stop(LatLng latLng) {ArrayList<LatLng> result = randomGenerateLatLngs(latLng);startMoveCar(result, index, false);}});

????????這里的MySmoothMoveMarker是我自定義的SmoothMoveMarker,大部分代碼都是沿用高德的SmoothMoveMarker,主要是為了增加每次平移動畫軌跡結束的回調和旋轉動畫。具體看源碼就知道。

2、添加旋轉動畫

????????每當車輛移動到下一個點后,還需要先旋轉角度,再執行平移動畫,不過平移動畫原先就有了,這里我們只需要在平移動畫之前添加一個旋轉動畫,在旋轉動畫后再執行平移動畫就好了,當然時間可以按自己喜好來分配。首先我們需要知道上一次車輛平移的角度

// 上一次車輛平移角度 float lastRotate = getRotate(tempPosition,var5);

和當前車輛平移的角度

// 當前車輛平移角度 float var7 = MySmoothMoveMarker.this.getRotate(var5, var9);

然后就是按順序執行動畫

MySmoothMoveMarker.this.marker.setRotateAngle(360.0F - var7 + MySmoothMoveMarker.this.mAMap.getCameraPosition().bearing); RotateAnimation rotateAnimation = new RotateAnimation(360.0F - lastRotate + MySmoothMoveMarker.this.mAMap.getCameraPosition().bearing,360.0F - var7 + MySmoothMoveMarker.this.mAMap.getCameraPosition().bearing); rotateAnimation.setInterpolator(new LinearInterpolator()); rotateAnimation.setDuration(var3 / 5); if (MySmoothMoveMarker.this.exitFlag || Thread.interrupted()) {MySmoothMoveMarker.this.marker.setAnimation((Animation) null);return;} MySmoothMoveMarker.this.marker.setAnimation(rotateAnimation); MySmoothMoveMarker.this.marker.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart() {}@Overridepublic void onAnimationEnd() {MySmoothMoveMarker.this.animation = new TranslateAnimation(var9);MySmoothMoveMarker.this.animation.setInterpolator(new LinearInterpolator());MySmoothMoveMarker.this.animation.setDuration(4 *var3 /5);if (MySmoothMoveMarker.this.exitFlag || Thread.interrupted()) {MySmoothMoveMarker.this.marker.setAnimation((Animation) null);return;}MySmoothMoveMarker.this.marker.setAnimation(MySmoothMoveMarker.this.animation);MySmoothMoveMarker.this.marker.startAnimation();} }); MySmoothMoveMarker.this.marker.startAnimation();

好吧,我偷懶了,變量名都是沿用SmoothMoveMarker混淆后的名稱。

這里需要注意的就是兩個動畫(旋轉和平移動畫)的時間之和要跟執行每段平移動畫的時間相等。

有需要或者感興趣的小伙伴可以繼續完善。Over!

源碼傳送地址

========下載積分已改為固定1分==================

總結

以上是生活随笔為你收集整理的仿滴滴首页车辆随机平滑移动,基于高德地图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色九九视频 | 日韩一区二区久久 | 色播五月激情 | 天堂草在线观看 | 黄色九九| 色亚洲视频 | 天天干,天天操,天天射 | 麻豆成人久久精品一区二区三区 | av在线免费观看不卡 | 一本久久综合亚洲鲁鲁五月天 | 尤物在线免费视频 | 亚洲av无码一区二区乱孑伦as | 欧美xxxx精品 | 日本阿v视频在线观看 | 免费欧美黄色 | 日韩一区二区三区高清 | 日韩不卡在线播放 | 精品一区二区亚洲 | 成年人精品 | 免费无遮挡无码永久在线观看视频 | 国产传媒一区二区 | 国产精品久久久久久久久久久久久久久久久 | 久久aⅴ国产欧美74aaa | 欧美 日韩 国产 中文 | 屁屁影院一区二区三区 | 日日摸夜夜添夜夜 | 色婷婷五| 色伊人 | 91国产一区二区 | 最新av网址在线观看 | 91在线高清 | 九色国产视频 | 国产精品成人3p一区二区三区 | 亚洲资源av | 91精品久久香蕉国产线看观看 | av影院在线播放 | 亚洲午夜精品一区 | 99热国 | 岳奶大又白下面又肥又黑水多 | 97高清国语自产拍 | 人人妻人人澡人人爽精品日本 | 51吃瓜网今日吃瓜 | 午夜小视频在线观看 | 成年人在线免费看 | 午夜天堂视频 | 国产高潮白浆 | 国产在线一区二区三区四区 | 亚洲av中文无码乱人伦在线视色 | 一区二区三区视频在线观看 | 污污视频在线播放 | 视频免费观看在线 | 日本老肥婆bbbwbbbwzr | 亚洲视频精品在线观看 | 欧美日韩视频一区二区 | 国产99在线 | 性xxxxbbbb | 日本顶级大片 | 久久男女视频 | 扒丝袜 | 国产乡下妇女做爰视频 | 成人在线高清视频 | 日韩干| 黄色小视频免费看 | 少妇av导航 | 日本免费黄色 | 黄色网在线播放 | 一级黄色片在线观看 | 欧美污视频在线观看 | 美女扒开尿口让男人爽 | 日韩美女黄色片 | 欧美片在线观看 | 欧美色999 | 91精品综合久久久久久五月天 | 亚洲免费高清视频 | 国产传媒视频 | 欧美精品成人一区二区三区四区 | 欧美精品乱码久久久久久按摩 | 国产精品成人免费一区二区视频 | 男男play呻吟动漫网站 | 爱福利视频一区 | 国产精品一二区在线观看 | 久久综合久久88 | 少妇无套内谢免费视频 | 天天干天天上 | 爽妇综合网 | 欧美精品二区 | 国产视频99 | 欧美黑人一级爽快片淫片高清 | 日本大尺度电影免费观看全集中文版 | 久久九九视频 | 成人导航网站 | 色爱AV综合网国产精品 | 日本理论片午伦夜理片在线观看 | 欧美黄色小说 | 国产特黄aaaaa毛片 | 天天鲁 | 亚洲av无码国产精品永久一区 | 开心激情播播网 | 亚洲自拍偷拍精品 |