通过百度地图获取公交线路的站点坐标的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高级程序设计 事件学习笔记
Sep 10 Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
JavaScript设置获取和设置属性的方法
Mar 04 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
Aug 20 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
React性能优化系列之减少props改变的实现方法
Jan 17 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
Sep 11 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
为PHP初学者的8点有效建议
2010/11/20 PHP
第五章 php数组操作
2011/12/30 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
Python实现通过继承覆盖方法示例
2018/07/02 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
岗位职责说明书
2014/05/07 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
财政局长个人总结
2015/03/04 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
小学生运动会广播
2015/08/19 职场文书