通过百度地图获取公交线路的站点坐标的js代码


Posted in Javascript onMay 11, 2012

最近做百度地图的模拟数据,需要获取某条公交线路沿途站点的坐标信息,貌似百度没有现成的API,因此做了一个模拟页面,工具而已,IE6/7/8不支持

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>获取公交站点坐标</title> 
<style type="text/css"> 
html,body{ height: 100%;} 
#results,#coordinate{ display: inline-block; width: 45%; min-height: 200px; border:1px solid #e4e4e4; vertical-align: top;} 
</style> 
<script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript"></script> 
</head> 
<body> 
<p><label for="busId">公交线路:</label><input type="text" value="521" id="busId" /><input type="button" id="btn-search" value="查询" /></p> 
<div id="results"></div> 
<div id="coordinate"></div> 
<script type="text/javascript"> 
(function(){ 
var tempVar; 
var busline = new BMap.BusLineSearch('武汉',{ 
renderOptions:{panel:"results"}, 
onGetBusListComplete: function(result){ 
if(result) { 
tempVar = result;//此时的结果并不包含坐标信息,所以getCoordinate函数不能在此调用。通过跟踪变量,坐标是在onGetBusListComplete之后才被百度的包添加进来的 
busline.getBusLine(result.getBusListItem(0)); 
} 
}, 
// api文档中一共有四个回调,除了onGetBusListComplete和onBusLineHtmlSet之外,还有onBusListHtmlSet和onGetBusLineComplete, 
// 经过测试只有在onBusLineHtmlSet这一步(线路格式化完毕)的时候,才会将坐标添加到tempVar中 
// 所以上面busline.getBusLine(result.getBusListItem(0));是必须的,不然没有办法获得坐标列表 
onBusLineHtmlSet : function(){ 
try{ 
getCoordinate(tempVar); 
}catch(e){ 
} 
} 
}); 
function getCoordinate(result){ 
var coordinate = document.getElementById("coordinate"); 
var stations = result['0']._stations; 
var html = []; 
stations.forEach(function(item){ 
html.push('<li>' + item.name + ' ' + item.position.lng + ' ' + item.position.lat + '</li>'); 
}); 
coordinate.innerHTML = '<ul>' + html.join('') + '</ul>'; 
} 
document.getElementById('btn-search').onclick = function(){ 
busline.getBusList(document.getElementById("busId").value); 
} 
})(); 
</script> 
</body> 
</html>

获取反向线路的话就把var stations = result['0']._stations;改为var stations = result[xx]._stations;整理了一下:
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>获取公交站点坐标</title> 
<style type="text/css"> 
html,body{ height: 100%;} 
#results,#coordinate{ display: inline-block; width: 45%; min-height: 200px; border:1px solid #e4e4e4; vertical-align: top;} 
</style> 
<script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript"></script> 
</head> 
<body> 
<p><label for="busId">公交线路:</label><input type="text" value="581" id="busId" /><input type="button" id="btn-search" value="查询" /></p> 
<div id="results"></div> 
<div id="coordinate"></div> 
<script type="text/javascript"> 
var global = {}; 
global.tempVar = {}; 
global.index = 0; 
global.lineNo = 0; 
var busline = new BMap.BusLineSearch('武汉',{ 
renderOptions:{panel:"results"}, 
onGetBusListComplete: function(result){ 
if(result) { 
global.tempVar = result; 
} 
}, 
onBusLineHtmlSet : function(){ 
try{ 
getCoordinate(global.tempVar); 
}catch(e){ 
} 
} 
}); 
function $$(id){ 
return document.getElementById(id); 
} 
function getCoordinate(result){ 
var coordinate = $$("coordinate"); 
var stations = result[global.index]._stations; 
var html = []; 
stations.forEach(function(item,index){ 
html.push('<li>' + global.lineNo + '#' + global.index + '#' + index + '#' + item.name + '#' + item.position.lng + '#' + item.position.lat + '</li>'); 
}); 
coordinate.innerHTML = '<ul>' + html.join('') + '</ul>'; 
} 
$$('btn-search').onclick = function(){ 
global.lineNo = $$("busId").value; 
busline.getBusList(global.lineNo); 
} 
$$('results').addEventListener('click',function(event){ 
var target = event.target; 
if('a' == target.tagName.toLowerCase() && 'dt' == target.parentNode.tagName.toLowerCase()){ 
event.preventDefault(); 
var tempHtml = target.parentNode.innerHTML; 
var indexOfValue = tempHtml.indexOf('_selectBusListItem('); 
global.index = - ( - tempHtml.substring(indexOfValue + '_selectBusListItem('.length,indexOfValue + '_selectBusListItem('.length + 1) ); 
busline.getBusLine(global.tempVar.getBusListItem(global.index)); 
} 
},false); 
</script> 
</body> 
</html>

来自小西山子
Javascript 相关文章推荐
用JS写的一个TableView控件代码
Jan 23 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
Oct 30 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
单击某一段文字改写文本颜色
Jun 06 Javascript
jQuery提交多个表单的小技巧
Jul 27 Javascript
js调用webservice构造SOAP进行身份验证
Apr 27 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 Javascript
Vue自定义指令介绍(2)
Dec 08 Javascript
不使用 JS 匿名函数理由
Nov 17 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
浅谈JS的原型和原型链
Jun 04 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 #Javascript
jQuery 过滤not()与filter()实例代码
May 10 #Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 #Javascript
javascript 在firebug调试时用console.log的方法
May 10 #Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 #Javascript
基于jQuery捕获超链接事件进行局部刷新代码
May 10 #Javascript
让人印象深刻的10个jQuery手风琴效果应用
May 08 #Javascript
You might like
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
PHP 源代码压缩小工具
2009/12/22 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
详解一个小实例理解js原型和继承
2019/04/24 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
创业计划书的内容步骤和要领
2014/01/04 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
交通事故被告答辩状
2015/05/22 职场文书