百度地图使用教程(Javascript版)

25 篇文章 1 订阅

注意:非Android版

准备:

百度地图在线文档:http://developer.baidu.com/map/reference/

百度地图在线实例:http://developer.baidu.com/map/jsdemo.htm


1.百度地图实例化

   需要在页面引入百度地图API。
  

Java代码   收藏代码
  1. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>  

 

然后在Body添加一个Div,用于显示地图,Div大小可自定义。

 

Html代码   收藏代码
  1. <div id="allmap" style="width: 1000px;height: 1000px;" ></div>  

 

之后编写初始化代码。

   

Js代码   收藏代码
  1. var map = new BMap.Map("allmap");                // 创建Map实例  
  2. var point = new BMap.Point(116.404, 39.915);      // 创建点坐标  
  3. map.centerAndZoom(point,15);                       // 初始化地图,设置中心点坐标和地图级别。  
  4. map.enableScrollWheelZoom();                       //启用滚轮放大缩小  

 

2.百度地图位置搜索

   

Js代码   收藏代码
  1. var map = new BMap.Map("allmap");  //实例化百度地图  
  2. var address = "海淀区国家图书馆";      //详细地址  
  3. var lableName = "国家图书馆";        //建筑名称  
  4. var city = "北京";                 //城市  
  5.   
  6. var myGeo = new BMap.Geocoder();   //地址解析器  
  7. /** 
  8.  * 根据地址获得位置坐标,然后实例化百度地图
  9.  */  
  10. myGeo.getPoint(address, function(point){      
  11.       
  12.   if(point){                
  13.       map.enableScrollWheelZoom();          //启用滚轮放大缩小        
  14.       map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。  
  15.       map.addControl(new BMap.NavigationControl());  //添加平移缩放控件  
  16.       map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件        
  17.        //创建标注(类似定位小红旗)  
  18.        var marker = new BMap.Marker(point);   
  19.        //标注提示文本  
  20.        var label = new BMap.Label(lableName,{"offset":new BMap.Size(20,-20)});         
  21.        marker.setLabel(label); //添加提示文本    
  22.        //创建消息框  
  23.        var infoWindow = new BMap.InfoWindow(address);    
  24.        //绑定标注单击事件,设置显示的消息框。
  25.        marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});  
  26.        map.addOverlay(marker);  //把标注添加到地图  
  27.   }  
  28. }, city);  

    页面效果:


      
 

3.公交线路查询

   

Html代码   收藏代码
  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  4. <title>百度地图公交查询</title>  
  5. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>  
  6. <script type="text/javascript">  
  7.   
  8. var map = null;  //实例化百度地图  
  9. var address = "海淀区国家图书馆";      //详细地址  
  10. var lableName = "国家图书馆";        //建筑名称  
  11. var city = "北京";                 //城市  
  12.   
  13. var myGeo = new BMap.Geocoder();   //地址解析器  
  14.   
  15. function initMap(){  
  16.     /**  
  17.      * 根据地址获得位置坐标,然后实例化百度地图  
  18.      */  
  19.     myGeo.getPoint(address, function(point){      
  20.           
  21.       if(point){  
  22.           map = new BMap.Map("allmap");  //实例化百度地图  
  23.           map.enableScrollWheelZoom();          //启用滚轮放大缩小        
  24.           map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。  
  25.           map.addControl(new BMap.NavigationControl());  //添加平移缩放控件  
  26.           map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件        
  27.            //创建标注(类似定位小红旗)  
  28.            var marker = new BMap.Marker(point);   
  29.            //标注提示文本  
  30.            var label = new BMap.Label(lableName,{"offset":new BMap.Size(20,-20)});         
  31.            marker.setLabel(label); //添加提示文本    
  32.            //创建消息框  
  33.            var infoWindow = new BMap.InfoWindow(address);    
  34.            //绑定标注单击事件,设置显示的消息框  
  35.            marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});  
  36.            map.addOverlay(marker);  //把标注添加到地图  
  37.       }  
  38.     }, city);  
  39. }  
  40.   
  41.   
  42.   
  43. //查询公交  
  44. function findPath(){  
  45.  var b = document.getElementById("begin").value;  //起始位置  
  46.  var e = document.getElementById("end").value;    //结束位置  
  47.     //初始化公共公交查询系统  
  48.     var transit = new BMap.TransitRoute(map,{  
  49.       renderOptions:{  
  50.           map:map,  
  51.           panel:'panel'  
  52.         }  
  53.      });  
  54.   
  55.     transit.search(b,e);  //查询  
  56. }  
  57.   
  58. window.onloadinitMap();   //初始化百度地图  
  59. </script>  
  60. </head>  
  61. <body>  
  62.   <div id="allmap" style="width: 500px;height: 500px;" ></div><br>  
  63.   <input id="begin" type="text"  /><input id="end" type="text" />&nbsp;&nbsp;&nbsp;<input value="查询" onclick="findPath()"  type="button" />  
  64.   <br>  
  65.   <div id="panel" ></div>  
  66. </body>  
  67. </html>  

    页面效果:

    
    
 

5.搜索附近信息

   

Html代码   收藏代码
  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  4. <title>Insert title here</title>  
  5. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>  
  6. <script type="text/javascript">  
  7.   
  8. var map = null;  //实例化百度地图  
  9. var address = "海淀区国家图书馆";      //详细地址  
  10. var lableName = "国家图书馆";        //建筑名称  
  11. var city = "北京";                 //城市  
  12.   
  13. var myGeo = new BMap.Geocoder();   //地址解析器  
  14.   
  15. function initMap(){  
  16.     /**  
  17.      * 根据地址获得位置坐标,然后实例化百度地图  
  18.      */  
  19.     myGeo.getPoint(address, function(point){      
  20.       if(point){  
  21.           map = new BMap.Map("allmap");  //实例化百度地图  
  22.           map.enableScrollWheelZoom();          //启用滚轮放大缩小        
  23.           map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。  
  24.           map.addControl(new BMap.NavigationControl());  //添加平移缩放控件  
  25.           map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件        
  26.            //创建标注(类似定位小红旗)  
  27.            var marker = new BMap.Marker(point);   
  28.            map.addOverlay(marker);  //把标注添加到地图  
  29.              
  30.            initPanel(point);  //调用搜索  
  31.       }  
  32.     }, city);  
  33. }  
  34.   
  35. //右侧信息面板初始化  
  36. function initPanel(point){  
  37.       //创建圆形范围  
  38.       var circle = new BMap.Circle(point,1000,{  
  39.             strokeWeight: 1 ,  
  40.             fillOpacity: 0.3,   
  41.             strokeOpacity: 0.3  
  42.           });  
  43.         map.addOverlay(circle);  //显示到地图  
  44.         //创建搜索范围,根据搜索关键词分类  
  45.         var local =  new BMap.LocalSearch(map, {renderOptions: {autoViewport: false},onSearchComplete:function(){  
  46.              
  47.             var res = local.getResults();   //返回值  
  48.             var str = ""; //内容  
  49.             var id = ""; //显示的位置  
  50.               
  51.             //根据查询关键词判断  
  52.             if(res.keyword == "公交车"){  
  53.                var busStopArr = new Array();  //车站数组  
  54.                var busNameArr = new Array();  //公交车名称数组  
  55.                id = "busList";  
  56.                  
  57.                //把信息存储到数组  
  58.                for(var i=0;i<res.getNumPois();i++){  
  59.                   var r = res.getPoi(i);  
  60.                   if(r == undefined){  
  61.                    break;  
  62.                   }else{  
  63.                      var arr = r.address.split(";");  
  64.                      busStopArr.push(r.title.replace(/[ ]/g,""));  
  65.                      for(var j=0;j<arr.length;j++){  
  66.                        busNameArr.push(arr[j].replace(/[ ]/g,""));  
  67.                      }  
  68.                   }  
  69.                }  
  70.                //去掉重复的车站信息  
  71.                for(var i=0;i<busStopArr.length;i++){  
  72.                       for(var j=i+1;j<busStopArr.length;j++){  
  73.                          if(busStopArr[i] == busStopArr[j]){  
  74.                              busStopArr.splice(j,1);  
  75.                                j--;  
  76.                          }  
  77.                       }  
  78.                   }  
  79.                //去掉重复的公交车名称  
  80.                for(var i=0;i<busNameArr.length;i++){  
  81.                       for(var j=i+1;j<busNameArr.length;j++){  
  82.                          if(busNameArr[i] == busNameArr[j]){  
  83.                              busNameArr.splice(j,1);  
  84.                                j--;  
  85.                          }  
  86.                       }  
  87.                   }  
  88.                  
  89.                //整理结果  
  90.                strstr=str+"<li>公交站:";  
  91.                for(var i=0;i<busStopArr.length;i++){  
  92.                   strstr=str+' '+busStopArr[i];    
  93.                }  
  94.                strstr=str+"</li>";  
  95.                strstr=str+"<li>公交线路:";  
  96.                for(var j=0;j<busNameArr.length;j++){  
  97.                    strstr=str+' '+busNameArr[j];  
  98.                }  
  99.                strstr=str+"</li>";  
  100.             }  
  101.             //查询地铁信息  
  102.             if(res.keyword == "地铁"){  
  103.               var arr = new Array();  
  104.                id = "metroList";    
  105.                for(var i=0;i<res.getNumPois();i++){  
  106.                   var r = res.getPoi(i);  
  107.                   if(r == undefined){  
  108.                    break;  
  109.                   }else{  
  110.                       //截取信息,存储到数组  
  111.                       if(r.title.substring(0,(r.title.indexOf('站')+1)) != ''){  
  112.                         arr.push({title:r.title.substring(0,(r.title.indexOf('站')+1)),mm:Math.round(map.getDistance(point,r.point))});  
  113.                       }   
  114.                           
  115.                   }  
  116.                }  
  117.                   //去掉重复的地铁站信息  
  118.                   for(var i=0;i<arr.length;i++){  
  119.                       for(var j=i+1;j<arr.length;j++){  
  120.                          if(arr[i].title == arr[j].title){  
  121.                                arr.splice(j,1);  
  122.                                j--;  
  123.                          }  
  124.                       }  
  125.                   }  
  126.                     
  127.                   //整理结果  
  128.                   for(var k=0;k<arr.length;k++){  
  129.                     strstr=str+'<li><span class="gj_lx" >'+arr[k].title+" ";  
  130.                            
  131.                     strstr=str+'<span class="lan" >&nbsp;</span>';  
  132.   
  133.                     strstr = str+'</span><span class="gj_m" >'+arr[k].mm+'米</span></li>';  
  134.                         
  135.                   }  
  136.                     
  137.                     
  138.             }  
  139.             document.getElementById(id).innerHTML = str;      
  140.           
  141.         }});    
  142.           
  143.         //获得搜索范围  
  144.         var bounds = getSquareBounds(circle.getCenter(),circle.getRadius());  
  145.           
  146.         //开始搜索  
  147.         local.searchInBounds("公交车",bounds);   
  148.         local.searchInBounds("地铁",bounds);  
  149.    }  
  150.   
  151.   
  152.   //封装好处理圆形范围的算法  
  153.   function getSquareBounds(centerPoi,r){  
  154.       var a = Math.sqrt(2) * r;  
  155.       var getMecator = map.getMapType().getProjection().lngLatToPoint;  
  156.       var getPoi = map.getMapType().getProjection().pointToLngLat;  
  157.   
  158.       mPoi = getMecator(centerPoi);  
  159.       var x0 = mPoi.x, y0 = mPoi.y;  
  160.      
  161.       var x1 = x0 + a / 2 , y1 = y0 + a / 2;  
  162.       var x2 = x0 - a / 2 , y2 = y0 - a / 2;  
  163.         
  164.       var ne = getPoi(new BMap.Pixel(x1, y1)), sw = getPoi(new BMap.Pixel(x2, y2));  
  165.       return new BMap.Bounds(sw, ne);          
  166.         
  167.   }  
  168.   
  169. window.onloadinitMap();   //初始化百度地图  
  170. </script>  
  171. </head>  
  172. <body style="float: left;margin-left: 10px;" >  
  173.   <div id="allmap" style="width: 500px;height: 500px;" ></div>  
  174. <h3>公交车</h3>  
  175. <ul id="busList" ></ul><br>  
  176. <h3>地铁</h3>  
  177. <ul id="metroList" ></ul>     
  178. </body>  
  179. </html>  

 

     结果:

    

 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值