使用代码分析神器logger2js,搞定一切难题[百度地图api示例]

jzshmyt 2014-03-12 11:47:08
需求说明:
百度map api并未公开获取站点坐标经纬度的api接口,通过logger2js分析百度地图api源码,找出获取某条公交线各个站点经纬度的未公开方法。

被分析页面全部代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
#l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
#r-result{height:100%;width:20%;float:left;}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=FEWAdks14E8Kul8QtRUO01p1"></script>
<title>公交/地铁线路查询</title>
</head>
<body>
<div id="l-map"></div>
<div id="r-result"></div>
</body>
</html>
<script type="text/javascript">
var tempVar;
var map = new BMap.Map("l-map"); // 创建Map实例
map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
var busline = new BMap.BusLineSearch(map,{
renderOptions:{map:map,panel:"r-result"},
onGetBusListComplete: function(result){
if(result) {
tempVar = result;
var fstLine = result.getBusListItem(0);//获取第一个公交列表显示到map上
busline.getBusLine(fstLine);
}
}
});

function busSearch(){
var busName = 331;
busline.getBusList(busName);
}

setTimeout(function(){
busSearch();
},1500);
</script>



开工,步骤如下:
1、在页面head部分,增加在线调试工具script地址如下
<script type="text/javascript" src="http://logger2js.googlecode.com/svn/trunk/logger2js/logger.js" debug=true beautify=true skinid=0></script> 

2、分析页面逻辑,使用ie开发人员工具或者findbug查看页面运行时html源代码,找出绘制站点的触发事件名称为Instance(‘TANGRAM__i’)._selectBusListItem,如下图

3、在logger2js工具窗口的执行入库框中输入Instance(‘TANGRAM__i’)._selectBusListItem,分析输出到控制台的代码逻辑如下:



4、拷贝出找到的代码块,对环境变量进行等价的赋值如下

var bl = Instance('TANGRAM__i');
for (var c = 0, d = bl.Fb.mk(); c < d; c++) {
  var e = bl.Fb.wp(c).position;
  var f = bl.Fb.wp(c).name;
$alert(f+":"+e.lat+","+e.lng);
}

5、在执行窗口输入:Instance('TANGRAM__i'),进行执行,找到回调方法名字

6、注册回调方法,并在方法中执行4步中找出的代码块,如下

//打印出站点坐标点
busline.setBusLineHtmlSetCallback(function(){
var bl = Instance('TANGRAM__i');
for (var c = 0, d = bl.Fb.mk(); c < d; c++) {
    var e = bl.Fb.wp(c).position;
    var f = bl.Fb.wp(c).name;
$alert(f+":"+e.lat+","+e.lng);
}
});

...全文
750 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangle1993 2016-01-15
  • 打赏
  • 举报
回复
请问第六步具体怎么操作?代码复制在何处?
qq_27623123 2015-04-29
  • 打赏
  • 举报
回复
大神,请问百度地图怎样通过坐标来获取它的位置啊并标注到地图上啊,js代码求一份
少林武圣 2014-12-07
  • 打赏
  • 举报
回复
调试工具打不开呀
码出春天 2014-12-07
  • 打赏
  • 举报
回复
厉害
嘻哈大咖秀 2014-03-12
  • 打赏
  • 举报
回复
这是学习贴吗?
yyl8781697 2014-03-12
  • 打赏
  • 举报
回复
jzshmyt 2014-03-12
  • 打赏
  • 举报
回复
来者有份,发帖怎么只能设置100分呀,想多设置都不行
jzshmyt 2014-03-12
  • 打赏
  • 举报
回复
引用 1 楼 microlab2009 的回复:
这是学习贴吗?
是散分贴 logger2js工具是本人写的,欢迎大家使用和提问

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧