现在的位置: 首页 > 综合 > 正文

web地图-baiduMap

2017年12月27日 ⁄ 综合 ⁄ 共 9529字 ⁄ 字号 评论关闭

JavaScript 帮助文档-链接: http://developer.baidu.com/map/jsdevelop-2.htm

JavaScript  API-链接: http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E6%A0%B8%E5%BF%83%E7%B1%BB

JavaScript  Demo-链接: http://developer.baidu.com/map/jsdemo.htm#a1_1

JavaScript  开源库-链接:http://developer.baidu.com/map/library.htm

地图API中提供的控件有:
Control:控件的抽象基类,所有控件均继承此类的方法、属性。通过此类您可实现自定义控件。
NavigationControl:地图平移缩放控件,PC端默认位于地图左上方,它包含控制地图的平移和缩放的功能。移动端提供缩放控件,默认位于地图右下方。
OverviewMapControl:缩略地图控件,默认位于地图右下方,是一个可折叠的缩略地图。
ScaleControl:比例尺控件,默认位于地图左下方,显示地图的比例关系。
MapTypeControl:地图类型控件,默认位于地图右上方。
CopyrightControl:版权控件,默认位于地图左下方。
GeolocationControl:定位控件,针对移动端开发,默认位于地图左下方。

地图API提供了如下几种覆盖物:
Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法。
Marker:标注表示地图上的点,可自定义标注的图标。
Label:表示地图上的文本标注,您可以自定义标注的文本内容。
Polyline:表示地图上的折线。
Polygon:表示地图上的多边形。多边形类似于闭合的折线,另外您也可以为其添加填充颜色。
Circle: 表示地图上的圆。
InfoWindow:信息窗口也是一种特殊的覆盖物,它可以展示更为丰富的文字和多媒体信息。注意:同一时刻只能有一个信息窗口在地图上打开。
可以使用map.addOverlay方法向地图添加覆盖物,使用map.removeOverlay方法移除覆盖物,注意此方法不适用于InfoWindow。

demo - HelloWorld:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥"></script>

<div id="container"></div> 

<script type="text/javascript"> 
var map = new BMap.Map("container");          // 创建地图实例  
var point = new BMap.Point(116.404, 39.915);  // 创建点坐标  
map.centerAndZoom(point, 15);                 // 初始化地图,设置中心点坐标和地图级别  
</script>  

事件监听
百度地图API中的大部分对象都含有addEventListener方法,您可以通过该方法来监听对象事件。例如,BMap.Map包含click、dblclick等事件。
map.addEventListener("click", function(){    
 alert("您点击了地图。");    
});   
在标准的DOM事件模型中(DOM Level 2 Events),监听函数会得到一个事件对象e,在e中可以获取有关该事件的信息。同时在监听函数中this会指向触发该事件的DOM元素。
map.addEventListener("click", function(e){    
 alert(e.point.lng + ", " + e.point.lat);    
}); 
map.addEventListener("zoomend", function(){    
 alert("地图缩放至:" + this.getZoom() + "级");    
});   
当您不再希望监听事件时,可以将事件监听进行移除。每个API对象提供了removeEventListener用来移除事件监听函数。
map.removeEventListener("click", showInfo);    


图层:
TrafficLayer:交通流量图层。
var traffic = new BMap.TrafficLayer();        // 创建交通流量图层实例    
map.addTileLayer(traffic);                    // 将图层添加到地图上   
map.removeTileLayer(traffic);                // 将图层移除    

地图工具概述
提示:工具已经制作成开源库(lib)对外免费开放,可直接访问JavaScript 开源库。
若您需要运行以下示例代码,请先确认已在开发工程中引入lib文件,具体引用方法可查看JavaScript 开源库提供的示例源文件。
注意,开源库必须与百度地图JS API同时使用。

地图服务概述
地图服务是指那些提供数据信息的接口,比如本地搜索、路线规划等等。百度地图API提供的服务有:
LocalSearch:本地搜索,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”。
TransitRoute:公交导航,提供某一特定地区的公交出行方案的搜索服务。
DrivingRoute:驾车导航,提供驾车出行方案的搜索服务。
WalkingRoute:步行导航,提供步行出行方案的搜索服务。
Geocoder:地址解析,提供将地址信息转换为坐标点信息的服务。
LocalCity:本地城市,提供自动判断您所在城市的服务。
TrafficControl:实时路况控件,提供实时和历史路况信息服务。
搜索类的服务接口需要指定一个搜索范围,否则接口将不能工作。

用户数据图层
百度地图API可以将用户上传到LBS云里的位置数据实时渲染成图层,然后通过CustomLayer对象叠加到地图上。

全景图展现

定制个性地图

// 百度地图API功能
var map = new BMap.Map("allmap");                        // 创建Map实例
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);     // 初始化地图,设置中心点坐标和地图级别

    map.setCenter("广州");   //设置地图中心点。center除了可以为坐标点以外,还支持城市名
    map.setZoom(10);  //将视图切换到指定的缩放等级,中心点坐标不变 

map.disableDragging();   //禁止拖拽
map.enableDragging();   //三秒后开启拖拽

var bs = map.getBounds();   //获取可视区域
var bssw = bs.getSouthWest();   //可视区域左下角
var bsne = bs.getNorthEast();   //可视区域右上角
alert("当前地图可视范围是:" + bssw.lng + "," + bssw.lat + "到" + bsne.lng + "," + bsne.lat);
	
map.addEventListener("click",function(e){
    alert(e.point.lng + "," + e.point.lat);
});

var pointA = new BMap.Point(106.486654,29.490295);  // 创建点坐标A--大渡口区
  map.setCenter(point);
  
  var marker = new BMap.Marker(point);
     map.addOverlay(marker);
	 
 BMap.Convertor.transMore(points,2,callback);        //一秒之后开始进行坐标转换。参数2,表示是从GCJ-02坐标到百度坐标。参数0,表示是从GPS到百度坐标
  
var polyline = new BMap.Polyline([pointA,pointB], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});  //定义折线
map.addOverlay(polyline);   //添加折线到地图上


 map.clearOverlays();    //清除地图上所有覆盖物

 
 
 //==============控件
map.addControl(new BMap.NavigationControl());  //添加默认缩放平移控件:左上
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL}));  //右上角,仅包含平移和缩放按钮
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_PAN}));  //左下角,仅包含平移按钮
map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, type: BMAP_NAVIGATION_CONTROL_ZOOM}));  //右下角,仅包含缩放按钮

map.addControl(new BMap.ScaleControl()); // 添加默认比例尺控件:左下
map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT}));                    // 左上
map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_RIGHT}));                    // 右上
map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));                    // 右下

map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]}));     //2D图,卫星图
map.addControl(new BMap.MapTypeControl({anchor: BMAP_ANCHOR_TOP_LEFT}));    //左上角,默认地图控件
map.setCurrentCity("北京");   //由于有3D图,需要设置城市哦

map.addControl(new BMap.OverviewMapControl());              //添加默认缩略地图控件
map.addControl(new BMap.OverviewMapControl({isOpen:true, anchor: BMAP_ANCHOR_TOP_RIGHT}));   //右上角,打开



//====================覆盖物
var marker1 = new BMap.Marker(new BMap.Point(116.384, 39.925));  // 创建标注
map.addOverlay(marker1);              // 将标注添加到地图中

//创建信息窗口
var infoWindow1 = new BMap.InfoWindow("普通标注");
marker1.addEventListener("click", function(){this.openInfoWindow(infoWindow1);});

marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画

//点聚合:最简单的用法,生成一个marker数组,然后调用markerClusterer类即可。
var markerClusterer = new BMapLib.MarkerClusterer(map, {markers:markers});

//折线
var polyline = new BMap.Polyline([
  new BMap.Point(116.399, 39.910),
  new BMap.Point(116.405, 39.920),
  new BMap.Point(116.425, 39.900)
], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});
map.addOverlay(polyline);
//多边形
//圆
//矩形

//弧线:可编辑
var beijingPosition=new BMap.Point(116.432045,39.910683),
hangzhouPosition=new BMap.Point(120.129721,30.314429),
taiwanPosition=new BMap.Point(121.491121,25.127053);
var points = [beijingPosition,hangzhouPosition, taiwanPosition];
var curve = new BMapLib.CurveLine(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5}); //创建弧线对象
map.addOverlay(curve); //添加到地图中
curve.enableEditing(); //开启编辑功能

//文本标注
var point = new BMap.Point(116.417854,39.921988);
var opts = {
position : point,    // 指定文本标注所在的地理位置
offset   : new BMap.Size(30, -30)    //设置文本偏移量
}
var label = new BMap.Label("欢迎使用百度地图,这是一个简单的文本标注哦~", opts);  // 创建文本标注对象
label.setStyle({
color : "red",
fontSize : "12px",
height : "20px",
lineHeight : "20px",
fontFamily:"微软雅黑"
});
map.addOverlay(label); 

//在天安门添加一个热区,鼠标放在地图天安门上,会出现提示文字
var hotSpot = new BMap.Hotspot(point, {text: "我爱北京天安门!", minZoom: 8, maxZoom: 18});
map.addHotspot(hotSpot);

//添加行政区域的边界划分
function getBoundary(){       
    var bdary = new BMap.Boundary();
    bdary.get("重庆", function(rs){       //获取行政区域
        map.clearOverlays();        //清除地图覆盖物       
        var count = rs.boundaries.length; //行政区域的点有多少个
        for(var i = 0; i < count; i++){
            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
            map.addOverlay(ply);  //添加覆盖物
            map.setViewport(ply.getPath());    //调整视野         
        }                
    });   
}

    <input type="button" onclick="marker.show();" value="显示" />
    <input type="button" onclick="marker.hide();" value="隐藏" />
    <input type="button" onclick="marker.enableDragging();" value="可拖拽" />
    <input type="button" onclick="marker.disableDragging();" value="不可拖拽" />	
	var p = marker.getPosition();       //获取marker的位置
alert("marker的位置是" + p.lng + "," + p.lat);   
	
var driving2 = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});    //驾车实例
driving2.search(myP1, myP2);    //显示一条公交线路	
	
	
		
//信息窗口
var opts = {
  width : 200,     // 信息窗口宽度
  height: 60,     // 信息窗口高度
  title : "海底捞王府井店" , // 信息窗口标题
  enableMessage:true,//设置允许信息窗发送短息
  message:"亲耐滴,晚上一起吃个饭吧?戳下面的链接看下地址喔~"
}
var infoWindow = new BMap.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层", opts);  // 创建信息窗口对象
map.openInfoWindow(infoWindow,point); //开启信息窗口	

	
marker.addEventListener("click", function(){          
   this.openInfoWindow(infoWindow);
   //图片加载完毕重绘infowindow
   document.getElementById('imgDemo').onload = function (){
       infoWindow.redraw();   //防止在网速较慢,图片未加载时,生成的信息框高度比图片的总高度小,导致图片部分被隐藏
   }
});	
	
	
var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
map.openInfoWindow(infoWindow,point); //开启信息窗口
document.getElementById("r-result").innerHTML = "信息窗口的内容是:<br />" + infoWindow.getContent();	
	


//右键菜单
var contextMenu = new BMap.ContextMenu();
var txtMenuItem = [
  {
   text:'放大',
   callback:function(){map.zoomIn()}
  },
  {
   text:'缩小',
   callback:function(){map.zoomOut()}
  },
  {
   text:'放置到最大级',
   callback:function(){map.setZoom(18)}
  },
  {
   text:'查看全国',
   callback:function(){map.setZoom(4)}
  },
  {
   text:'在此添加标注',
   callback:function(p){
    var marker = new BMap.Marker(p), px = map.pointToPixel(p);
    map.addOverlay(marker);
   }
  }
 ];
 for(var i=0; i < txtMenuItem.length; i++){
  contextMenu.addItem(new BMap.MenuItem(txtMenuItem[i].text,txtMenuItem[i].callback,100));
  if(i==1 || i==3) {
   contextMenu.addSeparator();
  }
 }
 map.addContextMenu(contextMenu);



//叠加层
//多边形覆盖物
function getBoundary(){       
    var bdary = new BMap.Boundary();
    bdary.get("上海", function(rs){       //获取行政区域
        map.clearOverlays();        //清除地图覆盖物       
        var count = rs.boundaries.length; //行政区域的点有多少个
        for(var i = 0; i < count; i++){
            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
            map.addOverlay(ply);  //添加覆盖物
            map.setViewport(ply.getPath());    //调整视野         
        }                
    });   
}


//事件
map.addEventListener("tilesloaded",function(){alert("地图加载完毕");});

map.addEventListener("dragend", function showInfo(){
 var cp = map.getCenter();
 alert(cp.lng + "," + cp.lat);
});

function showInfo(e){
 alert(e.point.lng + ", " + e.point.lat);
}
map.addEventListener("click", showInfo);

map.removeEventListener("click", showInfo);



//服务示例:search
var local = new BMap.LocalSearch(map, {
  renderOptions: {map: map, panel: "r-result"}
});
local.search("餐饮");


var local = new BMap.LocalSearch(map, {
  renderOptions:{map: map, autoViewport:true}
});
local.searchNearby("小吃", "前门");


var local = new BMap.LocalSearch(map, {
  renderOptions:{map: map}
});
local.searchInBounds("银行", map.getBounds());
map.addEventListener("dragend",function(){
    map.clearOverlays();
    local.searchInBounds("银行", map.getBounds());
});


var local = new BMap.LocalSearch("全国", {
  renderOptions: {
    map: map,
    panel : "r-result",
    autoViewport: true,
    selectFirstResult: false
  }
});
local.search("南京路");



//服务示例:公交
var transit = new BMap.TransitRoute(map, {
  renderOptions: {map: map}
});
transit.search("王府井", "西单");



//服务示例:驾车
var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});
driving.search("天安门", "百度大厦");



//服务示例:步行
var walking = new BMap.WalkingRoute(map, {renderOptions:{map: map, autoViewport: true}});
walking.search("天坛公园", "故宫");

抱歉!评论已关闭.