编辑: 向日葵8AS | 2018-10-08 |
11 控件位置偏移 除了指定停靠位置外,还可以通过偏移量来指示控件距离地图边界有多少像素.如果两个控件的停靠位置 相同,那么控件可能会重叠在一起,这时就可以通过偏移值使二者分开显示. 本示例将比例尺放置在地图的左下角,由于 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 端平移缩放控件样式,最后一个为移动端缩放控件样式. 下面的示例将调整平移缩放地图控件的外观. var opts = {type: BMAP_NAVIGATION_CONTROL_SMALL} map.addControl(new BMap.NavigationControl(opts));
百度地图 JavaScript APIv1.4 开发指南
12 自定义控件 百度地图 API 允许您通过继承 Control 来创建自定义地图控件. 要创建可用的自定义控件,您需要做以下工作: 定义一个自定义控件的构造函数. 设置自定义控件构造函数的 prototype 属性为 Control 的实例,以便继承控件基类. 实现 initialize()方法并提供 defaultAnchor 和defaultOffset 属性. 定义构造函数并继承 Control 首先您需要定义自定义控件的构造函数,并在构造函数中提供 defaultAnchor 和defaultOffset 两个属性, 以便 API 正确定位控件位置,接着让其继承于 Control.在下面的示例中我们定义一个名为 ZoomControl 的控件,每一次点击将地图放大两个级别.它具有文本标识,而不是平移缩放控件中使用的图形图标. // 定义一个控件类,即function function ZoomControl(){ // 设置默认停靠位置和偏移量 this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
this.defaultOffset = new BMap.Size(10, 10);
} // 通过 JavaScript 的prototype 属性继承于 BMap.Control ZoomControl.prototype = new BMap.Control();
初始化自定义控件 当调用 map.addControl()方法添加自定义控件时,API 会调用该对象的 initialize()方法用来初始化控件,您 需要实现此方法并在其中创建控件所需的 DOM 元素,并添加 DOM 事件.所有自定义控件中的 DOM 元素 最终都应该添加到地图容器(即地图所在的 DOM 元素)中去,地图容器可以通过 map.getContainer()方 法获得.最后 initialize()方法需要返回控件容器的 DOM 元素. // 自定义控件必须实现 initialize 方法,并且将控件的 DOM 元素返回 // 在本方法中创建个 div 元素作为控件的容器,并将其添加到地图容器中 ZoomControl.prototype.initialize = function(map){ // 创........