本文最初发布于个人我的博客:Jerry的乐园javascript
交大的校园巴士时刻表都只能在车站的站牌上查看。这对于须要出行的学生来讲很是不方便,没法合理作好出行的安排。为了解决这个问题,我和同一个套件的两位同窗一块儿完成了这个简单的app。这篇博客将简要介绍这个web应用是如何实现的。如下是效果图,实际的效果请到http://zry656565.github.io/SJTU-Bus查看。css
完成这个应用的主要步骤:html
百度地图JavaScript API免费对外开放。自v1.5版本起,您需先申请密钥(ak)才可以使用,接口(除发送短信功能外)无使用次数限制。java
所以咱们须要先申请密钥,过程很是简单,几步就完成,在此就很少赘述了。申请完毕你就获得了属于本身的ak,接下来就能够创建以下的hello world网页了哦!别忘了把ak=您的密钥
这部分改称你申请好的密钥。git
<!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
文件中,其中校园巴士车站存储的数据结构以下。数组中每个子数组表明一个车站,子数组的三个元素分别表明站点名和经纬度。github
{ "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] ] }
在设计好了上面的数据结构后,添加车站就很是容易了:web
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); }
校园巴士行车路径存储的数据结构以下,就是由一堆点的经纬度构成的。json
{ "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] ] }
在设计好了上面的数据结构后,依样画葫芦,咱们就能获得想要的路径了:api
//绘制路线 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" } } }
在设计好了上面的数据结构后,对以前添加巴士站点的代码稍加修改如下就搞定了,具体要添加的内容还比较多,能够移步源码查看。