百度map api并未公开获取站点坐标经纬度的api接口,通过logger2js分析百度地图api源码,找出获取某条公交线各个站点经纬度的未公开方法。

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

被分析页面全部代码:
XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
< 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地址如下
XML/HTML code
?
1
< 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、拷贝出找到的代码块,对环境变量进行等价的赋值如下
JavaScript code
?
1
2
3
4
5
6
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步中找出的代码块,如下
JavaScript code
?
1
2
3
4
5
6
7
8
9
//打印出站点坐标点 
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); 
    
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值