通过百度地图获取公交线路的站点坐标的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 相关文章推荐
jQuery 使用手册(七)
Sep 23 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
Dec 11 Javascript
原生js实现日期联动
Jan 12 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
JavaScript保存并运算页面中数字类型变量的写法
Jul 06 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
Aug 01 Javascript
jquery实现拖动效果
Aug 10 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
JS实现评价的星星功能
Aug 20 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 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
php远程下载类分享
2016/04/13 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
金融管理毕业生求职信
2014/03/03 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
上班旷工检讨书
2015/08/15 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
选购到合适的激光打印机
2022/04/21 数码科技
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技