通过百度地图获取公交线路的站点坐标的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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
js简易namespace管理器 实例代码
Jun 21 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
JS批量替换内容中关键词为超链接
Feb 20 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
vue.js路由跳转详解
Aug 28 Javascript
js中自定义react数据验证组件实例详解
Oct 19 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
了解JavaScript中的选择器
May 24 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
php发送post请求函数分享
2014/03/06 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python dict的常用方法示例代码
2020/06/23 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
结构工程个人自荐信范文
2013/11/30 职场文书
公益活动策划方案
2014/01/09 职场文书
热门专业求职信
2014/05/24 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
导游词之镇江焦山
2019/11/21 职场文书
小程序自定义轮播图圆点组件
2022/06/25 Javascript
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers