全部服务产品
开发者频道
定价
登录

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版

控件

地图控件概述

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

地图API中提供的控件有:

Control:控件的抽象基类,所有控件均继承此类的方法、属性。通过此类您可实现自定义控件。

Navigator:地图平移控件,默认位于地图左上方,它包含控制地图平移的功能。

Scaler:地图缩放控件,默认位于地图左上方,它包含控制地图缩放的功能。

Overview:地图缩略图控件,默认位于地图右下方,是一个可折叠的缩略地图。

Ruler:地图比例尺控件,默认位于地图左下方,显示地图的比例关系。

Copyright:地图版权控件,默认位于地图左下方。

向地图添加控件

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

// 添加Navigator
var nav:Navigator = new Navigator(map);
map.addControl(nav);
// 添加Overview			
var overview:Overview = new Overview(map);
map.addControl(overview);
// 添加Scaler			
var scaler:Scaler = new Scaler(map);
map.addControl(scaler);
// 添加Ruler			
var ruler:Ruler = new Ruler(map);
map.addControl(ruler);

控制控件位置

初始化控件后,可以设置控件的anchor和offset属性。anchor和offset属性共同控制控件在地图上的位置。


控件停靠位置

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

Anchor.TL 表示控件定位于地图的左上角。

Anchor.TR 表示控件定位于地图的右上角。

Anchor.BL 表示控件定位于地图的左下角。

Anchor.BR 表示控件定位于地图的右下角。

Anchor.TC 表示控件定位于地图的上中方。

Anchor.BC 表示控件定位于地图的下中方。

Anchor.LC 表示控件定位于地图的左中方。

Anchor.RC 表示控件定位于地图的右中方。


控件位置偏移

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

如下,让比例尺控件向右偏移100像素:

var ruler:Ruler = new Ruler(map);
ruler.offset = new Size(100, 0);
map.addControl(ruler);

自定义控件

百度地图Flash API允许您通过继承Control来创建自定义地图控件。

要创建可用的自定义控件,您需要做以下工作:

定义一个自定义控件并继承Control。

在构造函数里可以设置自定义控件默认的anchor和offset。

重写create、destroy和dispose函数。其中create是控件添加到舞台后的响应函数;destroy是控件移出舞台后的响应函数;dispose是销毁控件的函数,在dispose里做释放资源的操作。


自定义控件并继承自Control

如下代码:

import baidu.map.core.Map;
import baidu.map.control.Control;
 
package{
    public class MyControl extends Control{
        public function MyControl(map:Map){
            super(map);
            // 设置默认的anchor和offset
            // 赋值_anchor和 _offset
	    _anchor = Anchor.TL;
	    _offset = new Size(0, 0);
        }
    }
 
    // dispose函数里释放资源
    override public function dispose():void{
 
        // TODO...
    }
 
    // Event.ADDED_TO_STAGE事件的响应函数
    override protected function create(evt:Event = null):void{
        // TODO...
    }
 
    // Event.REMOVED_FROM_STAGE事件的响应函数
    override protected function destroy(evt:Event = null):void{
        // TODO...
    }
}


添加自定义控件

添加自定义控件与添加其他控件方法一致,调用map.addControl()方法即可。

// 创建控件实例  
var myCtrl:MyControl = new MyControl(map);  
// 添加到地图当中  
map.addControl(myCtrl);

自定义控件实现请参看相关下载提供的示例Demo。

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消