通过百度地图获取公交线路的站点坐标的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 Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
JS一个简单的注册页面实例
Sep 05 Javascript
vue webuploader 文件上传组件开发
Sep 23 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
微信小程序按钮点击跳转页面详解
May 06 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 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
删除无限级目录与文件代码共享
2006/07/12 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php 购物车完整实现代码
2014/06/05 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
详解express与koa中间件模式对比
2017/08/07 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
numpy排序与集合运算用法示例
2017/12/15 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
python3 re返回形式总结
2020/11/20 Python
运动会广播稿400字
2014/01/25 职场文书
劳动实践课感言
2014/02/01 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
师范生求职自荐信
2014/06/14 职场文书
安全生产月宣传标语
2014/10/06 职场文书
班主任经验交流材料
2014/12/16 职场文书
紫日观后感
2015/06/05 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
python 闭包函数详细介绍
2022/04/19 Python