`
only_love_java
  • 浏览: 7658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

准备:

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

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


1.百度地图实例化

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

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>

 

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

 

<div id="allmap" style="width: 1000px;height: 1000px;" ></div>

 

之后编写初始化代码

   

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

 

    2.百度地图位置搜索

   

var map = new BMap.Map("allmap");  //实例化百度地图
var address = "海淀区国家图书馆";      //详细地址
var lableName = "国家图书馆";        //建筑名称
var city = "北京";                 //城市

var myGeo = new BMap.Geocoder();   //地址解析器
/**
 * 根据地址获得位置坐标,然后实例化百度地图
 */
myGeo.getPoint(address, function(point){	
	
  if(point){		      
      map.enableScrollWheelZoom();          //启用滚轮放大缩小      
      map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。
      map.addControl(new BMap.NavigationControl());  //添加平移缩放控件
	  map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件      
       //创建标注(类似定位小红旗)
	   var marker = new BMap.Marker(point); 
	   //标注提示文本
	   var label = new BMap.Label(lableName,{"offset":new BMap.Size(20,-20)});       
	   marker.setLabel(label); //添加提示文本  
	   //创建消息框
	   var infoWindow = new BMap.InfoWindow(address);  
	   //绑定标注单击事件,设置显示的消息框
	   marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});
	   map.addOverlay(marker);  //把标注添加到地图
  }
}, city);

    页面效果:


      
 

3.公交线路查询

   

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>百度地图公交查询</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<script type="text/javascript">

var map = null;  //实例化百度地图
var address = "海淀区国家图书馆";      //详细地址
var lableName = "国家图书馆";        //建筑名称
var city = "北京";                 //城市

var myGeo = new BMap.Geocoder();   //地址解析器

function initMap(){
	/**
	 * 根据地址获得位置坐标,然后实例化百度地图
	 */
	myGeo.getPoint(address, function(point){	
		
	  if(point){
		  map = new BMap.Map("allmap");  //实例化百度地图
	      map.enableScrollWheelZoom();          //启用滚轮放大缩小      
	      map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。
	      map.addControl(new BMap.NavigationControl());  //添加平移缩放控件
		  map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件      
	       //创建标注(类似定位小红旗)
		   var marker = new BMap.Marker(point); 
		   //标注提示文本
		   var label = new BMap.Label(lableName,{"offset":new BMap.Size(20,-20)});       
		   marker.setLabel(label); //添加提示文本  
		   //创建消息框
		   var infoWindow = new BMap.InfoWindow(address);  
		   //绑定标注单击事件,设置显示的消息框
		   marker.addEventListener("click",function(){this.openInfoWindow(infoWindow);});
		   map.addOverlay(marker);  //把标注添加到地图
	  }
	}, city);
}



//查询公交
function findPath(){
 var b = document.getElementById("begin").value;  //起始位置
 var e = document.getElementById("end").value;    //结束位置
	//初始化公共公交查询系统
    var transit = new BMap.TransitRoute(map,{
      renderOptions:{
	      map:map,
	      panel:'panel'
	    }
     });

    transit.search(b,e);  //查询
}

window.onload= initMap();   //初始化百度地图
</script>
</head>
<body>
  <div id="allmap" style="width: 500px;height: 500px;" ></div><br>
  <input id="begin" type="text"  />到<input id="end" type="text" />&nbsp;&nbsp;&nbsp;<input value="查询" onclick="findPath()"  type="button" />
  <br>
  <div id="panel" ></div>
</body>
</html>

    页面效果:

    
    
 

    5.搜索附近信息

   

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<script type="text/javascript">

var map = null;  //实例化百度地图
var address = "海淀区国家图书馆";      //详细地址
var lableName = "国家图书馆";        //建筑名称
var city = "北京";                 //城市

var myGeo = new BMap.Geocoder();   //地址解析器

function initMap(){
	/**
	 * 根据地址获得位置坐标,然后实例化百度地图
	 */
	myGeo.getPoint(address, function(point){	
	  if(point){
		  map = new BMap.Map("allmap");  //实例化百度地图
	      map.enableScrollWheelZoom();          //启用滚轮放大缩小      
	      map.centerAndZoom(point,15);          //初始化地图,设置中心点坐标和地图级别。
	      map.addControl(new BMap.NavigationControl());  //添加平移缩放控件
		  map.addControl(new BMap.OverviewMapControl());  //添加地图缩略图控件      
	       //创建标注(类似定位小红旗)
		   var marker = new BMap.Marker(point); 
		   map.addOverlay(marker);  //把标注添加到地图
		   
		   initPanel(point);  //调用搜索
	  }
	}, city);
}

//右侧信息面板初始化
function initPanel(point){
	  //创建圆形范围
	  var circle = new BMap.Circle(point,1000,{
		    strokeWeight: 1 ,
		    fillOpacity: 0.3, 
		    strokeOpacity: 0.3
		  });
	    map.addOverlay(circle);  //显示到地图
		//创建搜索范围,根据搜索关键词分类
	    var local =  new BMap.LocalSearch(map, {renderOptions: {autoViewport: false},onSearchComplete:function(){
		   
	    	var res = local.getResults();   //返回值
	        var str = ""; //内容
			var id = ""; //显示的位置
            
			//根据查询关键词判断
	        if(res.keyword == "公交车"){
	           var busStopArr = new Array();  //车站数组
	           var busNameArr = new Array();  //公交车名称数组
			   id = "busList";
			   
			   //把信息存储到数组
			   for(var i=0;i<res.getNumPois();i++){
				  var r = res.getPoi(i);
				  if(r == undefined){
	               break;
		          }else{
	                 var arr = r.address.split(";");
					 busStopArr.push(r.title.replace(/[ ]/g,""));
	                 for(var j=0;j<arr.length;j++){
	                   busNameArr.push(arr[j].replace(/[ ]/g,""));
				     }
				  }
			   }
			   //去掉重复的车站信息
			   for(var i=0;i<busStopArr.length;i++){
					  for(var j=i+1;j<busStopArr.length;j++){
						 if(busStopArr[i] == busStopArr[j]){
							 busStopArr.splice(j,1);
							   j--;
						 }
					  }
				  }
			   //去掉重复的公交车名称
			   for(var i=0;i<busNameArr.length;i++){
					  for(var j=i+1;j<busNameArr.length;j++){
						 if(busNameArr[i] == busNameArr[j]){
							 busNameArr.splice(j,1);
							   j--;
						 }
					  }
				  }
			   
			   //整理结果
			   str=str+"<li>公交站:";
			   for(var i=0;i<busStopArr.length;i++){
				  str=str+' '+busStopArr[i];  
			   }
			   str=str+"</li>";
			   str=str+"<li>公交线路:";
			   for(var j=0;j<busNameArr.length;j++){
				   str=str+' '+busNameArr[j];
			   }
			   str=str+"</li>";
			}
		    //查询地铁信息
	        if(res.keyword == "地铁"){
	          var arr = new Array();
			   id = "metroList";  
			   for(var i=0;i<res.getNumPois();i++){
				  var r = res.getPoi(i);
				  if(r == undefined){
	               break;
		          }else{
		        	  //截取信息,存储到数组
		        	  if(r.title.substring(0,(r.title.indexOf('站')+1)) != ''){
	                    arr.push({title:r.title.substring(0,(r.title.indexOf('站')+1)),mm:Math.round(map.getDistance(point,r.point))});
		        	  } 
				        
	              }
			   }
				  //去掉重复的地铁站信息
				  for(var i=0;i<arr.length;i++){
					  for(var j=i+1;j<arr.length;j++){
						 if(arr[i].title == arr[j].title){
							   arr.splice(j,1);
							   j--;
						 }
					  }
				  }
				  
				  //整理结果
				  for(var k=0;k<arr.length;k++){
					str=str+'<li><span class="gj_lx" >'+arr[k].title+" ";
		                 
	                str=str+'<span class="lan" >&nbsp;</span>';

				    str = str+'</span><span class="gj_m" >'+arr[k].mm+'米</span></li>';
					  
				  }
				  
			  	  
			}
			document.getElementById(id).innerHTML = str;	
		
		}});  
		
	    //获得搜索范围
	    var bounds = getSquareBounds(circle.getCenter(),circle.getRadius());
		
		//开始搜索
	    local.searchInBounds("公交车",bounds); 
	    local.searchInBounds("地铁",bounds);
   }


  //封装好处理圆形范围的算法
  function getSquareBounds(centerPoi,r){
      var a = Math.sqrt(2) * r;
      var getMecator = map.getMapType().getProjection().lngLatToPoint;
	  var getPoi = map.getMapType().getProjection().pointToLngLat;

      mPoi = getMecator(centerPoi);
      var x0 = mPoi.x, y0 = mPoi.y;
   
      var x1 = x0 + a / 2 , y1 = y0 + a / 2;
      var x2 = x0 - a / 2 , y2 = y0 - a / 2;
      
      var ne = getPoi(new BMap.Pixel(x1, y1)), sw = getPoi(new BMap.Pixel(x2, y2));
      return new BMap.Bounds(sw, ne);        
      
  }

window.onload= initMap();   //初始化百度地图
</script>
</head>
<body style="float: left;margin-left: 10px;" >
  <div id="allmap" style="width: 500px;height: 500px;" ></div>
<h3>公交车</h3>
<ul id="busList" ></ul><br>
<h3>地铁</h3>
<ul id="metroList" ></ul>	
</body>
</html>

 

     结果:

    

 
 

   

 

 

  • 大小: 44.6 KB
  • 大小: 139.5 KB
  • 大小: 124.3 KB
分享到:
评论
4 楼 only_love_java 2013-03-01  
  O(∩_∩)O谢谢
3 楼 Aypak 2013-03-01  
.. [img][/img]
2 楼 gutianyilian 2013-03-01  
不错,收下了,支持一下。。。
1 楼 only_love_java 2013-03-01  
为啥没人留言呢?

相关推荐

    百度地图API教程 实例

    **百度地图API教程 实例** 在当今信息化社会,地图服务已经成为各类应用不可或缺的一部分。百度地图API作为国内广泛应用的地图服务提供商,为开发者提供了丰富的接口和工具,使得开发者能够轻松地将地图功能集成到...

    百度地图JavaScriptAPI离线版.rar

    这个压缩包“百度地图JavaScript API离线版.rar”可能包含了实现这一功能所需的全部资源和文档。 首先,我们来详细了解一下百度地图JavaScript API。它提供了丰富的地图功能接口,包括但不限于地图加载、定位、标注...

    百度地图API教程+案例

    本教程结合实例,旨在帮助新手快速掌握百度地图API的使用技巧。 首先,我们需要了解什么是API。API(Application Programming Interface)是应用程序编程接口,它定义了软件系统之间交互的方式。百度地图API则是...

    百度地图api教程

    在“百度地图离线API教程”中,你将详细学习如何使用这些API,并通过实例代码理解其工作原理。教程通常会涵盖API的引入、配置、调用方法以及常见问题解决。同时,还会指导你如何在实际项目中集成这些API,实现如定位...

    leaflet加载百度地图

    本教程将详细讲解如何通过Leaflet成功加载并显示百度地图。 首先,我们需要理解两种坐标系统的差异。WGS84是全球通用的地理坐标系统,常用于GPS和其他地理位置服务。而百度地图使用的是基于GCJ-02(火星坐标)的BD-...

    百度地图超级简单使用

    **百度地图API基础使用教程** 在当今信息化社会,地图服务已经深入到我们生活的各个角落,尤其是在移动应用中,定位和导航功能尤为重要。百度地图作为国内主流的地图服务提供商之一,提供了强大的API供开发者使用,...

    百度地图视频教程javaweb

    根据给定的文件信息“百度地图视频教程javaweb”,我们可以从中提炼出一系列与百度地图API集成到JavaWeb项目中的相关知识点。以下是对这些知识点的详细解析: ### 一、百度地图API简介 百度地图API(Application ...

    javascript百度地图API,显示2点间通勤路线,步行,自行车,公交车,开车.zip只要指定你的经伟度坐标即可挂接上百度地图

    "百度地图怎么查看经纬度_互联网_百度经验.url"则是关于如何获取或查看经纬度的教程,这对于需要输入坐标来使用API的用户来说十分有用。用户可以通过这个链接学习如何在百度地图上找到特定位置的精确经纬度。 "拾取...

    arcgis for js加载百度地图高德地图天地图

    本教程将详细阐述如何利用ArcGIS for JavaScript API来加载百度地图、高德地图和天地图,实现跨平台的地图服务整合。 首先,我们需要了解ArcGIS for JavaScript API的基本概念。API提供了丰富的地图操作和空间分析...

    ArcGIS API for JavaScript3加载百度地图和影像

    这篇教程将深入探讨如何使用ArcGIS API for JavaScript 3.x版本加载百度地图和其影像服务。 首先,我们需要了解ArcGIS API的基本结构。它通过一系列的类、方法和事件来构建地图应用,包括Map对象用于表示地图,...

    54.(leaflet篇)leaflet接入百度地图服务时只有北半球的解决方案.zip

    在本教程中,我们将深入探讨如何在Leaflet地图库中解决接入百度地图服务时只显示北半球的问题。Leaflet是一款轻量级、强大的JavaScript库,用于创建交互式地图。而百度地图则提供了丰富的地图API,包括定位、路线...

    2.(leaflet篇)leaflet接入百度地图.zip

    在本教程中,我们将深入探讨如何将Leaflet.js库与百度地图API集成,以创建一个交互式的地图应用。Leaflet是一个轻量级的JavaScript库,专门用于开发移动设备友好的Web地图。而百度地图是中国领先的在线地图服务提供...

    VB调用百度地图示例

    在本示例中,我们需要使用的是百度地图JavaScript API。 1. **注册百度地图API**: 在使用百度地图之前,你需要在百度地图开放平台(http://lbsyun.baidu.com/)上注册并创建一个应用,获取API密钥(AK)。这个AK将...

    cesium加载百度地图

    本教程将详细讲解如何在Cesium中加载百度地图,帮助开发者实现更丰富的地图展示效果。 首先,我们需要理解Cesium的基本工作原理。Cesium基于WebGL技术,能够在浏览器中生成高精度、高性能的3D地形和建筑物模型。它...

    baiduMap_openlayer(openlayer加载百度地图和高德地图例子)

    本示例“baiduMap_openlayer”是关于如何利用OpenLayers加载和展示百度地图与高德地图的教程。这个教程对开发者来说具有很高的参考价值,特别是那些想要在自己的Web应用中集成地图功能的人员。 首先,让我们深入...

    9.(arcgis api for js篇)arcgis api for js接入百度地图(有偏移).zip

    在本教程中,我们将深入探讨如何使用ArcGIS API for JavaScript集成百度地图,并处理地图坐标系之间的偏移问题。ArcGIS API for JS是一个强大的工具,它允许开发者构建交互式的Web地图应用,而百度地图在国内有着...

    百度地图API实现热力地图

    在本教程中,我们将深入探讨如何使用Python编程语言结合百度地图API来实现热力地图的绘制。热力地图是一种有效的数据可视化工具,它通过颜色的深浅来展示特定区域的密度或活动强度,通常用于展示人口分布、交通流量...

    在百度地图上贴图片(制作天气预报雷达云图),画点(制作景区人流图) 教程.zip

    - **(最新版)百度地图§覆盖物OverlayOptions - u011118524的专栏 - CSDN博客.url**:这是一个关于百度地图API覆盖物使用的详细教程,包括如何使用`OverlayOptions`类创建各种类型的覆盖物,非常有助于实践中的应用...

    C# winfrom窗体显示百度地图

    本教程将聚焦于如何在VS2015环境下利用WinFroms窗体结合WebBrowser控件来显示百度地图。这一过程涉及到的知识点包括C#编程基础、Windows Forms控件的使用以及HTML和JavaScript的交互。 首先,我们需要理解C# ...

    百度地图开发教程

    本教程将深入讲解如何利用百度地图JavaScript API v2.0进行开发,帮助你构建具有定位、导航、路线规划等功能的应用。 ### 一、API概述 百度地图JavaScript API是百度地图服务提供的一套基于JavaScript语言的开发...

Global site tag (gtag.js) - Google Analytics