借助百度地图api下载公交信息
来源:互联网 发布:数值型数据的分组方法 编辑:程序博客网 时间:2024/04/30 14:21
GIS中数据的获取非常重要,有好的想法却因为数据缺失不得不夭折非常可惜,由此也可以深刻理解数据是gis的血液。
参考菩提老王和酸奶小妹的博客,这两天实现了百度地图api下载南京市市区的的公交信息,相关注意点如下:
1.下载json2.js包,可以在javascript中将对象序列化为 json字符串
2.百度地图中的公交线路名称并不全是标准的,比如公交线路名称为"110路支线“,但是在百度地图中的名称是”110支线“,不能通过统一的处理方式来处理,需要将某些路线进行特殊处理,这也体现出数据格式标准规范化是多么重要。
3.程序中使用DispatcherTimer,每隔一定时间间隔(1秒、2秒等)进行一次路线查询,实验地区为南京市市区,总共239条路线,应该获取476条路线(路线是往返的,有的是单线、环线等),不同的时间间隔对获取路线的条数有影响,但是即使将间隔设置的足够大,也不一定得到全部的路线,要看运气了
4.最后的公交路线txt文件,内容格式为[{公交路线1的json字符串},{公交路线2的json字符串},……] ,需要使用Notepad++软件,在菜单的”格式“中设置为”以UTF-8无BOM格式编码“
javascript代码如下,想下载程序的可到资源中下载,使用了silverlight5开发,思路参考菩提老王的博客:
<script type="text/javascript"> var busName; var count1 = 0, count2 = 0 ; var array2=new Array(); function BusLinePoint() { this.lng = ""; this.lat = ""; } function BusStopPosition() { this.lng = ""; this.lat = ""; } function BusStop() { this.name = ""; this.position = ""; } function BusLineInfo() { this.name = ""; this.startTime = ""; this.endTime = ""; this.company = ""; this.stopsCount = ""; this.points = new Array(); this.stops = new Array(); } var busline = new BMap.BusLineSearch("南京", { // renderOptions: { map: map, panel: "results" }, onGetBusListComplete: function (busListResult) { if (busListResult) { for (var i = 0, num = busListResult.getNumBusList(); i < num; i++) { var item = busListResult.getBusListItem(i); var busLineName = item.name.substring(0, item.name.indexOf('(')); if (busLineName.indexOf(busName) == 0 || busLineName == "110支线") { if ((busName.indexOf("路") + 1) == busName.length) { if ((busName.indexOf("路") + 1) == busLineName.length || busLineName == "3路内环" || busLineName == "3路外环" || busLineName == "48路空调" ||busLineName == "54路空调" || busLineName == "64路空调" || busLineName == "150路空调"|| busLineName == "185路环线") { busline.getBusLine(item); count2++; } } else { busline.getBusLine(item); count2++; } } } busline.setGetBusLineCompleteCallback(function (lineResults) { var jsonObj = lineResults; // console.log(jsonObj.Be.R[0].lat); var busLineInfo = new BusLineInfo(); busLineInfo.name = jsonObj.name; busLineInfo.startTime = jsonObj.startTime; busLineInfo.endTime = jsonObj.endTime; busLineInfo.company = jsonObj.company; busLineInfo.stopsCount = jsonObj.stopsCount; for (var obj in jsonObj.Be.R) { var busLinePoint = new BusLinePoint(); busLinePoint.lat = jsonObj.Be.R[obj].lat; busLinePoint.lng = jsonObj.Be.R[obj].lng; busLineInfo.points[obj] = busLinePoint; } for (var obj in jsonObj.kn) { var busStopPositon = new BusStopPosition(); var busStop = new BusStop(); busStopPositon.lat = jsonObj.kn[obj].position.lat; busStopPositon.lng = jsonObj.kn[obj].position.lng; busStop.name = jsonObj.kn[obj].name; busStop.position = busStopPositon; busLineInfo.stops[obj] = busStop; } busLineInfo.stopsCount = jsonObj.kn.length; // console.log(JSON.stringify(busLineInfo)); var jsonInfo = JSON.stringify(busLineInfo); var slHost = document.all("slObject"); var page = slHost.Content.BuilderPage; page.Show(jsonInfo); count1++; }); } } }); function busSearch(name) { busName = name; busline.getBusList(busName); } function num1() { return count1; } function num2() { return count2; } function name() { return busName; }</script>
- 借助百度地图api下载公交信息
- (四)Android百度公交开发—百度地图API之根据经纬度查询地址信息
- 百度地图API详解之公交导航
- 百度地图API详解之公交导航
- 百度地图开发之【公交信息检索】
- 百度地图开发之公交信息检索
- android百度地图 查询该公交站的公交信息
- Android百度公交开发(四)——百度地图API之根据经纬度查询地址信息
- 借助百度地图api实现显示地图,自动定位功能
- (六)Android百度公交开发—百度地图API之公交换乘方案搜索
- Android百度公交开发(六)——百度地图API之公交换乘方案搜索
- [012] 百度地图API之公交换乘方案搜索(Android)
- 基于百度地图API的Android公交换乘导航
- [012] 百度地图API之公交换乘方案搜索(Android) .
- 百度地图API之公交换乘方案搜索(Android) .(12)
- 百度地图API之定位+公交地铁线路导航
- [012] 百度地图API之公交换乘方案搜索(Android)
- 百度地图API之公交换乘方案搜索(Android)
- 分享一款基于jQuery的QQ表情插件
- CSDN——can't stop dreaming neala
- datanode启动开启了那些任务线程
- 使用Nexus 给maven 搭建私服
- sqlite时间戳处理
- 借助百度地图api下载公交信息
- 更新Subclipse 1.8x出错
- Log4j 2.0 使用说明
- webservice的几种开发方式总结
- hdu 1241
- c++推荐看的一些经典书籍
- [oracle]共享服务器模式下processes参数是否限制连接数
- linux 无密码登录配置里的注意事项
- Bugzilla安装和编辑所遇到的问题