比例尺、缩略图、平移缩放之百度地图添加控件方法


Posted in Javascript onAugust 03, 2015

下面通过图文并茂的方式给大家详细介绍下比例尺、缩略图、平移缩放之百度地图添加控件方法。

地图控件概述

百度地图上负责与地图交互的UI元素称为控件。百度地图API中提供了丰富的控件,您还可以通过Control类来实现自定义控件。

地图API中提供的控件有:

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

可以使用Map.addControl()方法向地图添加控件。在此之前地图需要进行初始化。例如,要将标准地图控件添加到地图中,可在代码中添加如下内容:

var map = new BMap.Map("container");    

map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    

map.addControl(new BMap.NavigationControl());

可以向地图添加多个控件。在本例中我们向地图添加一个平移缩放控件、一个比例尺控件和一个缩略图控件。在地图中添加控件后,它们即刻生效。

map.addControl(new BMap.NavigationControl());    

map.addControl(new BMap.ScaleControl());    

map.addControl(new BMap.OverviewMapControl());    

map.addControl(new BMap.MapTypeControl());    

map.setCurrentCity("北京"); // 仅当设置城市信息时,MapTypeControl的切换功能才能可用

控制控件位置

初始化控件时,可提供一个可选参数,其中的anchor和offset属性共同控制控件在地图上的位置。

控件停靠位置 anchor表示控件的停靠位置,即控件停靠在地图的哪个角。当地图尺寸发生变化时,控件会根据停靠位置的不同来调整自己的位置。anchor允许的值为:
BMAP_ANCHOR_TOP_LEFT 表示控件定位于地图的左上角。
BMAP_ANCHOR_TOP_RIGHT 表示控件定位于地图的右上角。
BMAP_ANCHOR_BOTTOM_LEFT 表示控件定位于地图的左下角。
BMAP_ANCHOR_BOTTOM_RIGHT 表示控件定位于地图的右下角。

比例尺、缩略图、平移缩放之百度地图添加控件方法

控件位置偏移

除了指定停靠位置外,还可以通过偏移量来指示控件距离地图边界有多少像素。如果两个控件的停靠位置相同,那么控件可能会重叠在一起,这时就可以通过偏移值使二者分开显示。

本示例将比例尺放置在地图的左下角,由于API默认会有版权信息,因此需要添加一些偏移值以防止控件重叠。

var opts = {offset: new BMap.Size(150, 5)}    

map.addControl(new BMap.ScaleControl(opts));

修改控件配置

地图API的控件提供了丰富的配置参数,您可参考API文档来修改它们以便得到符合要求的控件外观。例如,NavigationControl控件就提供了如下类型:

BMAP_NAVIGATION_CONTROL_LARGE 表示显示完整的平移缩放控件。

BMAP_NAVIGATION_CONTROL_SMALL 表示显示小型的平移缩放控件。

BMAP_NAVIGATION_CONTROL_PAN 表示只显示控件的平移部分功能。

BMAP_NAVIGATION_CONTROL_ZOOM 表示只显示控件的缩放部分功能。

下图从左向右依次展示了上述不同类型的控件外观:

比例尺、缩略图、平移缩放之百度地图添加控件方法

上图前4个为PC端平移缩放控件样式,最后一个为移动端缩放控件样式。

下面的示例将调整平移缩放地图控件的外观。

上图前4个为PC端平移缩放控件样式,最后一个为移动端缩放控件样式。

下面的示例将调整平移缩放地图控件的外观。

添加缩略图

<!DOCTYPE html>
<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 {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
    #allmap{width:100%;height:500px;}
    #r-result{width:100%;margin-top:5px;}
    p{margin:5px; font-size:14px;}
  </style>
  <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
  <title>添加/删除地图类型、缩略图控件</title>
</head>
<body>
  <div id="allmap"></div>
  <div id="r-result">
    <input type="button" onclick="add_control();" value="添加" />
    <input type="button" onclick="delete_control();" value="删除" />
  </div>
  <p>点击地图类型控件切换普通地图、卫星图、三维图、混合图(卫星图+路网),右下角是缩略图,点击按钮查看效果</p>
</body>
</html>
<script type="text/javascript">
  // 百度地图API功能
  var map = new BMap.Map("allmap");
  map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);

  var mapType1 = new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]});
  var mapType2 = new BMap.MapTypeControl({anchor: BMAP_ANCHOR_TOP_LEFT});

  var overView = new BMap.OverviewMapControl();
  var overViewOpen = new BMap.OverviewMapControl({isOpen:true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT});
  //添加地图类型和缩略图
  function add_control(){
    map.addControl(mapType1);     //2D图,卫星图
    map.addControl(mapType2);     //左上角,默认地图控件
    map.setCurrentCity("北京");    //由于有3D图,需要设置城市哦
    map.addControl(overView);     //添加默认缩略地图控件
    map.addControl(overViewOpen);   //右下角,打开
  }
  //移除地图类型和缩略图
  function delete_control(){
    map.removeControl(mapType1);  //移除2D图,卫星图
    map.removeControl(mapType2);
    map.removeControl(overView);
    map.removeControl(overViewOpen);
  }
</script>

效果图

比例尺、缩略图、平移缩放之百度地图添加控件方法

以上就是本文的全部内容,希望大家喜欢。

Javascript 相关文章推荐
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 Javascript
JS控制输入框内字符串长度
May 21 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
jQuery实现图片局部放大镜效果
Mar 17 Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
Nov 06 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
Dec 20 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
Aug 22 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 #Javascript
JavaScript图片轮播代码分享
Jul 31 #Javascript
简单实现异步编程promise模式
Jul 31 #Javascript
JavaScript数据类型判定的总结笔记
Jul 31 #Javascript
jquery代码实现多选、不同分享功能
Jul 31 #Javascript
Jquery实现瀑布流布局(备有详细注释)
Jul 31 #Javascript
jquery实现仿JqueryUi可拖动的DIV实例
Jul 31 #Javascript
You might like
php 生成随机验证码图片代码
2010/02/08 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
基于jquery实现左右上下移动效果
2018/05/02 jQuery
angular共享依赖的解决方案分享
2020/10/15 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
简单理解Python中的装饰器
2015/07/31 Python
Python中Class类用法实例分析
2015/11/12 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
flask框架路由常用定义方式总结
2019/07/23 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python中_del_还原数据的方法
2020/12/09 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
思想品德课教学反思
2014/02/10 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
redis连接被拒绝的解决方案
2021/04/12 Redis
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
Mysql中常用的join连接方式
2022/05/11 MySQL