本文最初发布于我的个人博客: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来完成交大校园巴士时刻表相关推荐

  1. 【百度地图API】——如何用label制作简易的房产标签

    摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产标签的方法呢? 答案当然是有的啦~ 我们可以利用label嘛! ...

  2. 【百度地图API】如何制作班级地理通讯录?LBS通讯录

    原文:[百度地图API]如何制作班级地理通讯录?LBS通讯录 摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等.一般班级人员都不会超过300个,因为可以高效地 ...

  3. baidumap api MySQL_百度地图API开发笔记一(基础篇)

    什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供了诸 ...

  4. 微信小程序城市定位(百度地图API)

    概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...

  5. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  6. 教你用百度地图API抓取建筑物周边位置、房价信息(附代码)

    来源:大数据挖掘DT数据分析 本文共2465字,建议阅读5分钟. 本文为大家解读怎样用脚本与百度API的交互,爬取百度地图的数据. 需求描述 对于数据挖掘工程师来说,有时候需要抓取地理位置信息,比如统 ...

  7. 【百度地图API】小学生找哥哥——小学生没钱打车,所以此为公交查询功能

    原文:[百度地图API]小学生找哥哥--小学生没钱打车,所以此为公交查询功能 任务描述: 有位在魏公村附近上小学的小朋友,要去北京邮电大学找哥哥.他身上钱很少,只够坐公交的.所以,百度地图API快帮帮 ...

  8. 【百度地图API】百度API卫星图使用方法和卫星图对比工具

    百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度地图API卫星图 调用百度卫星图有两种方式,一是地图类型控件,一是 ...

  9. 【百度地图API】北京周边7日游——图标按路线轨迹行动

    原文:[百度地图API]北京周边7日游--图标按路线轨迹行动 任务描述: 春节就要来啦~酸奶小妹的妈妈要从遥远的重庆,来到北京过春节呢!酸奶小妹忙着给妈妈计划,北京周边的旅游线路.计划好路线后,就开始 ...

最新文章

  1. 00后当道,今秋开学的AI专业的本科生究竟学什么?
  2. 【H5】解决ios禁止缩放失效的方法
  3. scrum 11.8
  4. java try catch_Java中关于try、catch、finally中的细节分析
  5. nginx File not found 错误(转)
  6. 从 Spark Streaming 到 Apache Flink : 实时数据流在爱奇艺的演进
  7. PostGIS容器运行
  8. 2017计算机三级试卷,2017年计算机三级《网络技术》测试题及答案
  9. 【POJ - 1698】Alice's Chance(网络流最大流,建图)
  10. Oracle 游标使用大全2
  11. Docker教程(三) Docker网络访问和数据管理
  12. 客户端请求时间和服务端处理时间不匹配问题
  13. linux修改参数命令,linux chfn命令参数及用法详解(linux修改用户资料命令)
  14. 【java】 jsp网页session和application,全局变量方法
  15. MapReduce实操5-1数据预处理——巴西利亚历史气温数据分析
  16. Mstar的Monitor方案笔记(七)——EDID基本数据结构
  17. 虹科Linux远程桌面服务器助力工业生产管理
  18. html5输入框表情,H5页面input输入框含有键盘自带的表情符时显示异常
  19. 国外2个在线web程序代码编辑网站
  20. 人民币大写数字注意事项

热门文章

  1. Web 面试之 HTTP和浏览器
  2. (五十二)剑网三大风车伤害计算器
  3. 萌宠历险记html5游戏在线玩,7724萌宠历险记
  4. 17. 进圈 编程练习
  5. linux下caffe编译以及python环境配置手记
  6. linux中cpu使用率命令,LINUX下查看CPU使用率的命令
  7. 【CSP201609-3】炉石传说【模拟】
  8. cb.conjunction()的意思
  9. matlab根据y标注x,知道y的值,怎么标注出对应x值所对应曲线的坐标啊;matlab
  10. 为什么手机八核心还会卡?