通过百度地图获取公交线路的站点坐标的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 相关文章推荐
仅用[]()+!等符号就足以实现几乎任意Javascript代码
Mar 01 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
Jul 17 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
使用js 设置url参数
Jul 08 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
JavaScript tab选项卡插件实例代码
Feb 23 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
JavaScript箭头函数_动力节点Java学院整理
Jun 28 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
vue如何在项目中调用腾讯云的滑动验证码
Jul 15 Javascript
原生JS实现飞机大战小游戏
Jun 09 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图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
用python找出那些被“标记”的照片
2017/04/20 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
利用python修改json文件的value方法
2018/12/31 Python
Python基础教程之异常详解
2019/01/10 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
顶撞领导检讨书
2014/01/29 职场文书
先进集体获奖感言
2014/02/13 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
600字作文之感受大自然
2019/11/27 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript