使用百度地图API来完成交大校园巴士时刻表
本文最初發布于我的個人博客:Jerry的樂園
交大的校園巴士時刻表都只能在車站的站牌上查看。這對于需要出行的學生來說非常不方便,無法合理做好出行的安排。為了解決這個問題,我和同一個套件的兩位同學一起完成了這個簡單的app。這篇博客將簡要介紹這個web應用是如何實現的。以下是效果圖,實際的效果請到http://zry656565.github.io/SJTU-Bus查看。
完成這個應用的主要步驟:
- 申請百度地圖API訪問權限
- 添加校園巴士車站
- 繪制校園巴士路徑
- 彈出校園巴士時刻表
申請百度地圖API訪問權限
百度地圖JavaScript API免費對外開放。自v1.5版本起,您需先申請密鑰(ak)才可使用,接口(除發送短信功能外)無使用次數限制。
因此我們需要先申請密鑰,過程非常簡單,幾步就完成,在此就不多贅述了。申請完畢你就得到了屬于自己的ak,接下來就可以建立如下的hello world網頁了哦!別忘了把ak=您的密鑰這部分改稱你申請好的密鑰。
<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script><title>地圖展示</title> </head> <body><div id="allmap"></div> </body> </html> <script type="text/javascript">// 百度地圖API功能var map = new BMap.Map("allmap");map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);map.addControl(new BMap.MapTypeControl());map.setCurrentCity("北京"); </script>添加校園巴士車站
首先本應用所有的數據都存儲在一個data.json文件中,其中校園巴士車站存儲的數據結構如下。數組中每一個子數組代表一個車站,子數組的三個元素分別代表站點名和經緯度。
{"stopList":[["東川路地鐵站", 121.426814, 31.023853],["菁菁堂", 121.436534, 31.02475],["校醫院", 121.439911, 31.025764],["東上院", 121.445463, 31.028007],["東中院", 121.444457, 31.030127],["新圖書館", 121.443954, 31.03155],["行政B樓", 121.447601, 31.032742],["電信學院", 121.448751, 31.03155],["凱旋門", 121.452308, 31.029431]] }在設計好了上面的數據結構后,添加車站就非常容易了:
for (var i = 0; i < stopList.length; i++) {var point = new BMap.Point(stopList[i][1], stopList[i][2]);var marker = new BMap.Marker(point);var label = new BMap.Label(stopList[i][0],{offset:new BMap.Size(20,-10)});marker.setLabel(label);map.addOverlay(marker); }繪制校園巴士路徑
校園巴士行車路徑存儲的數據結構如下,就是由一堆點的經緯度構成的。
{"lineList": [[121.436534, 31.02475],[121.439911, 31.025764],[121.445535, 31.027412],[121.445301, 31.027984],[121.444331, 31.030104],[121.443774, 31.031605],[121.448373, 31.033121],[121.448319, 31.032285]] }在設計好了上面的數據結構后,依樣畫葫蘆,我們就能得到想要的路徑了:
//繪制路線 var pointArr = []; for (var i = 0; i < lineList.length; i++) {pointArr.push(new BMap.Point(lineList[i][0], lineList[i][1])); } var polyline = new BMap.Polyline(pointArr, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5}); map.addOverlay(polyline);彈出校園巴士時刻表
校園巴士行車時刻表存儲的數據結構如下,就是由一堆點的經緯度構成的。
{"stopTime":{"東川路地鐵站": {"direct1": "07:24 07:39 07:54 08:09 17:03 17:28 17:58 18:43 19:28 20:28","festival_direct1": "8:24 16:58 17:43 18:28",},"菁菁堂": {"direct1": "07:30 07:45 08:00 08:15 08:25 08:40 09:00 09:20 09:40 10:00","direct2": "08:30 08:50 09:10 09:30 10:00 10:30 11:00 11:30 12:30 13:30","festival_direct1": "08:30 09:30 10:30 11:30","festival_direct2": "09:00 10:00 11:00 12:00"},"校醫院": {"direct1": "07:30 07:45 08:00 08:15 08:25 08:40 09:00 09:20 09:40 10:00","direct2": "08:50 09:10 09:30 09:50 10:20 10:50 11:20 11:50 12:50 13:50","festival_direct1": "08:30 09:30 10:30 11:30","festival_direct2": "09:20 10:20 11:20 12:20"}} }在設計好了上面的數據結構后,對之前添加巴士站點的代碼稍加修改以下就搞定了,具體要添加的內容還比較多,可以移步源碼查看。
還有哪些工作?
- 東川路站的經緯度需要修正
- 支持小屏手機的訪問
- 有興趣的同學可以fork我的項目
反饋與建議
- 本應用是由幾位交大的同學利用課余時間制作,有什么問題可以及時反饋給我們。
- 所有的反饋建議請在issue版提交
- 或者直接在本博客留言
參考資料
- 關于調整校園巴士運行線路及運行時刻的通知
總結
以上是生活随笔為你收集整理的使用百度地图API来完成交大校园巴士时刻表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神盾局第二季麦克机器人_神盾局特工第四季
- 下一篇: 1000款水墨墨迹毛笔素材