@[TOC](map核心类 自定义控件 地图样式(setMapStyle) 获取全景示例(getPanorama())
申请秘钥
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>v3.0版本 map核心类 自定义控件 地图样式(setMapStyle) 获取全景示例(getPanorama())</title>
<style>
html{
height:100%}
body{
height:100%;margin:0px;padding:0px}
#container{
height:80%}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=你的秘钥"></script>
</head>
<body>
<div id="container"></div>
<div>
<button id="bound" >返回地图可视区域</button>
<button id="center" >中心点</button>
<button id="nanhua" >南华大学</button>
<div id="adds">
<button name="btns" id="add" >+</button>
<span>视图等级</span>
<button name="btns" id="del" >-</button>
</div>
</div>
<script>
window.onload = function(){
// 创建地图实例
var map = new BMap.Map("container");
// 创建点坐标
var point = new BMap.Point(112.5527201488,26.9273408603); //衡阳县第六中学
// 设初始化地图
// 若调用高清底图(针对移动端开发)时,zoom可赋值范围为3-18级
// 如果center类型为字符串时,比如“北京”,zoom可以忽略,地图将自动根据center适配最佳zoom级别
map.centerAndZoom(point, 15);// 初始化地图,设置中心点坐标和地图级别 3-19
//设置地图类型
//BMAP_NORMAL_MAP 此地图类型展示普通街道视图
//BMAP_SATELLITE_MAP 此地图类型展示卫星视图
//BMAP_HYBRID_MAP 此地图类型展示卫星和路网的混合视图
//map.setMapType(); //格式不清楚 ??
map.addControl(new BMap.MapTypeControl({
mapTypes: [BMAP_SATELLITE_MAP] }));// 地图类型
//map.addControl(new BMap.MapTypeControl());// 地图类型
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
map.enableDragging(); //启用地图拖拽,默认启用
//map.disableDragging(); //禁用地图拖拽
map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用
//map.disableScrollWheelZoom(); //禁用滚轮放大缩小
map.enableDoubleClickZoom(); //启用双击放大,默认启用
//map.disableDoubleClickZoom(); //禁用双击放大
map.enableKeyboard(); //启用键盘操作,默认禁用。
//上、下、左、右键可连续移动地图。同时按下其中两个键可使地图进行对角移动。
//PgUp、PgDn、Home和End键会使地图平移其1/2的大小。+、-键会使地图放大或缩小一级
map.disableKeyboard();//禁用键盘操作
map.enableInertialDragging(); //启用地图惯性拖拽,默认禁用
//map.disableInertialDragging(); //禁用地图惯性拖拽
map.enableContinuousZoom(); //启用连续缩放效果,默认禁用
//map.disableContinuousZoom(); //禁用连续缩放效果
map.enablePinchToZoom(); //启用双指操作缩放,默认启用
//map.disablePinchToZoom(); //禁用双指操作缩放
map.enableAutoResize(); //启用自动适应容器尺寸变化,默认启用
//map.disableAutoResize(); //禁用自动适应容器尺寸变化
//设置地图默认的鼠标指针样式。参数cursor应符合CSS的cursor属性规范
//map.setDefaultCursor("copy");
//设置拖拽地图时的鼠标指针样式
//map.setDraggingCursor("copy");
//返回地图默认的鼠标指针样式
console.log(map.getDefaultCursor()); //url(http://api0.map.bdimg.com/images/openhand.cur) 8 8,default
//返回拖拽地图时的鼠标指针样式
console.log(map.getDraggingCursor()); //url(http://api0.map.bdimg.com/images/closedhand.cur) 8 8,move
//设置地图允许的最小级别
map.setMinZoom(1);
//设置地图允许的最大级别
map.setMaxZoom(19);
//设置地图样式,样式包括地图底图颜色和地图要素是否展示两部分
map.setMapStyle({
style:'midnight'})
//模板
//默认地图样式(normal)
//清新蓝风格(light)
//黑夜风格(dark)
//清新蓝绿风格(bluish)
//高端灰风格(grayscale)
//强边界风格(hardedge)
//青春绿风格(darkgreen)
//浪漫粉风格(pink)
//午夜蓝风格(midnight)
//自然绿风格(grassgreen)
//精简风格(googlelite)
//红色警戒风格(redalert)
//自定义地图样式 调试样式http://wiki.lbsyun.baidu.com/custom/ JavaScript API v3.0 -->个性化地图-->个性化编辑方式
// var setstyle = [ {
// "featureType": "water",
// "elementType": "geometry.fill",
// "stylers": {
// "color": "#ff0000ff",
// "hue": "#ff0000",
// "weight": "1",
// "lightness": 1,
// "saturation": 100,
// "visibility": "on"
// }
// }]
// map.setMapStyle({
// styleJson:setstyle
// })
//返回地图可视区域
var boundspan = document.getElementById("bound");
// boundspan.click = function(){
boundspan.addEventListener('click',function(){
var ss = map.getBounds(); //返回了地图视野的 左下角 右上角坐标
console.log(ss+"getBounds")
});
//返回地图当前中心点
var centerbtn = document.getElementById("center");
centerbtn.addEventListener('click',function(){
var cen = map.getCenter(); //返回地图当前中心点
var cen_point = new BMap.Point(cen.lng,cen.lat);
var cen_mark = new BMap.Marker(cen_point);
map.addOverlay(cen_mark);
var cen_label = new BMap.Label("地图当前中心点",{
position:cen_point});
map.addOverlay(cen_label);
console.log(cen.lng,cen.lat,"getCenter")
})
var points = [ //百度坐标 lng,lat
{
"point":new BMap.Point(112.638886,27.052889),"name":"点一"},
{
"point":new BMap.Point(112.243344,26.748755),"name":"点二"},
{
"point":new BMap.Point(112.552509,26.926427),"name":"衡州别院"},
{
"point":new BMap.Point(112.5783703713,26.8995635436),"name":"衡阳市人民政府"},
{
"point":new BMap.Point(112.6379079719,26.8948866350),"name":"衡阳火车站"},
{
"point":new BMap.Point(112.5962682402,26.9041238628),"name":"南华大学"},
{
"point":new BMap.Point(112.5600814819,26.8928800357),"name":"南华大学附属第二医院"},
{
"point":new BMap.Point(112.5561869144,26.8928034872),"name":"生态公园-北门"},
{
"point":new BMap.Point(112.6234089966,26.9170718962),"name":"石鼓书院"},
];
var arrPoints = [];
for(var i=0;i<points.length;i++){
var marks = new BMap.Marker(points[i].point);
var labels = new BMap.Label(points[i].name,{
position:points[i].point});
map.addOverlay(marks);
map.addOverlay(labels);
arrPoints.push(points[i].point);
}
//返回两点之间的距离,单位是米
var distance = map.getDistance(points[4].point,points[6].point);
console.log(points[4].name +"到"+points[6].name+"的距离是:"+distance+"m");
//返回地图类型 getMapType
var name = map.getMapType().getName();//返回地图类型名称
var Layer = map.getMapType().getTileLayer();//返回地图类型对应的图层
//var jection = map.getMapType().ggetProjection();//返回地图类型所使用的投影实例
var Color = map.getMapType().getTextColor();//返回地图类型对应的前景色
var Tips = map.getMapType().getTips();//返回地图类型的提示说明,用于在地图类型控件中提示
console.log(
JSON.stringify(map.getMapType())+
"地图类型名称:"+ name+
"地图类型对应的图层:"+Layer+
//"地图类型所使用的投影实例"+jection+
"地图类型对应的前景色:"+Color+
"地图类型的提示说明:"+Tips
);
//返回地图视图的大小,以像素表示
console.log("地图视图"+JSON.stringify(map.getSize()));
//此方法仅返回视野信息(中心点坐标,缩放),不会将新的中心点和级别做用到当前地图上
console.log("视野信息"+JSON.stringify(map.getViewport()));
//返回地图当前缩放级别
console.log(map.getZoom())
//将地图的中心点更改为给定的点 并移动到
var nanhua = document.getElementById("nanhua");
nanhua.addEventListener("click",function(){
map.panTo(points[5].point)
})
//将地图在水平位置上移动x像素,垂直位置上移动y像素。
//如果指定的像素大于可视区域范围或者在配置中指定没有动画效果,则不执行滑动效果
// setTimeout(function(){
// map.panBy(600,600,{
// noAnimation:true //是否在平移过程中禁止动画
// })
// },2000)
//重新设置地图,恢复地图初始化时的中心点和级别
//map.reset();
//设置地图中心点。center除了可以为坐标点以外,还支持城市名
//map.setCenter(points[5].point);
//设置地图城市
//注意当地图初始化时的类型设置为BMAP_NORMAL_MAP时,需要在调用centerAndZoom之前调用此方法设置地图所在城市
map.setCurrentCity('衡阳')
//根据提供的地理区域或坐标设置地图视野,调整后的视野会保证包含提供的地理区域或坐标
// map.setViewport(arrPoints,{//ViewportOptions
// enableAnimation:true,//是否启用动画效果移动地图,默认为true。当调整后的级别与当前地图级别一致时,将使用动画效果移动地图
// margins:[30, 20, 0, 20] ,//视野调整的预留边距,例如: margins: [30, 20, 0, 20] 表示坐标点会限制在上述区域内
// //地图级别的偏移量,您可以在方法得出的结果上增加一个偏移值。
// //例如map.setViewport计算出地图的级别为10,如果zoomFactor为-1,则最终的地图级别为9
// zoomFactor:-1,
// //改变地图视野的延迟执行时间,单位毫秒,默认为200ms。此延时仅针对动画效果有效
// delay:3000
// });
// map.setViewport({//Viewport
// center:arrPoints[5],//视野中心点
// zoom:4 //视野级别
// },{//ViewportOptions 同上});
map.setViewport(arrPoints);
var opts = {
width : 250, // 信息窗口宽度
height: 100, // 信息窗口高度
title : "Hello" // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow("World", opts);
map.openInfoWindow(infoWindow,arrPoints[1]);
//将视图切换到指定的缩放等级,中心点坐标不变
//注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动
var btn = document.getElementsByName("btns")
var zoom = 15;
btn[0].addEventListener("click",function(e){
//+
zoom++;
//map.setZoom(zoom);
map.zoomIn();//放大一级视图
})
btn[1].addEventListener("click",function(e){
//-
zoom--;
//map.setZoom(zoom);
map.zoomOut();//缩小一级视图
})
var kon = new BMap.OverviewMapControl();
//添加控件
//map.addControl(kon);// 缩略地图
//移除控件
//map.removeControl(kon);// 缩略地图
//返回地图的容器元素。
console.log(map.getContainer());
var Menu = new BMap.ContextMenu();
Menu.addItem(new BMap.MenuItem("dd"))
//添加右键菜单--->右键菜单.html
//将全景实例与Map类进行绑定 ---> 全景.html
//map.setPanorama()
//获取与Map类绑定的全景实例
//?当创建用户自定义控件时,需要自行实现Control.initialize()方法,并将控件的容器元素添加到地图上,通过此方法可获得地图容器
console.log(map.getPanorama())
// 控件 ---> 控件.html
}
</script>
</body>
</html>