通过百度地图获取公交线路的站点坐标的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 相关文章推荐
使用script的src实现跨域和类似ajax效果
Nov 10 Javascript
jQuery选择器全集详解
Nov 24 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
详解vue渲染从后台获取的json数据
Jul 06 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
react实现同页面三级跳转路由布局
Sep 26 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
疯狂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
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
prototype 学习笔记整理
2009/07/17 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
pyside写ui界面入门示例
2014/01/22 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python中with用法讲解
2020/02/07 Python
python中怎么表示空值
2020/06/19 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
宣传标语大全
2014/07/01 职场文书
关于读书的活动方案
2014/08/14 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
小学毕业感言200字
2015/07/30 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python