不管是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发人员使用。降低开发人员工作量的二级API接口。除了官方通用的鱼骨、鹰眼控件,还有大量官方开发的地图插件,相似谷歌的lib。当然本文还会介绍自己定义插件的使用。

 

 -------------------------------------------------------------------------------------------------

第一部分 控件

眼下官方支持的控件包括:缩放控制条-地图工具条(ToolBar)、缩略图-鹰眼(OverView)、比例尺(Scale)。

之所以把这三个控件放到一起讲,是由于他们的操作差点儿一样,使用plugin加入控件,然后都有show和hide方法。

预览图:

1、  缩放控制条-地图工具条(ToolBar) 

工具条有非常多效果,比方隐藏标尺,隐藏方向键盘。甚至还有HTML5定位。

 

加入鱼骨:

mapObj.plugin(["AMap.ToolBar"],function(){   //在地图中加入ToolBar插件
toolBar = new AMap.ToolBar();
mapObj.addControl(toolBar);
});

 

移除鱼骨:

toolBar.hide();

 

完整鱼骨:

    toolBar.show();
toolBar.showRuler();
toolBar.showDirection();

 

仅仅有方向盘:

    toolBar.show();
toolBar.showDirection();
toolBar.hideRuler();

 

仅仅有长标尺:

    toolBar.show();
toolBar.hideDirection();
toolBar.showRuler();

 

仅仅有短标尺:

    toolBar.show();
toolBar.hideRuler();
toolBar.hideDirection();

 

2、  缩略图-鹰眼(OverView) 

能够设置鹰眼是否打开。是否显示。显示就是isOpen:true;

打开例如以下左图open(),关闭状例如以下右图close()。

mapObj.plugin(["AMap.OverView"],function(){  //在地图中加入鹰眼插件
//载入鹰眼
overView = new AMap.OverView({
visible:true //初始化显示鹰眼
});
mapObj.addControl(overView);
overView.open(); //展开鹰眼
});

 

3、  比例尺(Scale) 

mapObj.plugin(["AMap.Scale"],function(){    //载入比例尺插件
scale = new AMap.Scale();
mapObj.addControl(scale);
scale.show();
});

 

------------------------------------------------------------------------------------------------

第二部分:插件

官方开发的插件有:圆编辑插件 (AMap.CircleEditor)、折线、多边形编辑插件 (AMap.PolyEditor)、鼠标工具插件 (AMap.MouseTool)、距离量測插件 (AMap.RangingTool) 、地图类型切换插件 (AMap.MapType)。

1、  圆编辑插件 (AMap.CircleEditor) 

加入圆形

circle = new AMap.Circle({   //圆形编辑器的样式
map: mapObj,
center:new AMap.LngLat("116.40332221984863","39.90025505675715"),
radius:1000,
strokeColor: "#F33",
strokeOpacity: 1,
strokeWeight: 3,
fillColor: "ee2200",
fillOpacity: 0.35
});

 

打开编辑器

mapObj.plugin(["AMap.CircleEditor"],function(){
circleEditor = new AMap.CircleEditor(mapObj,circle); //创建圆形编辑器对象
circleEditor.open(); //打开圆形编辑器
});

 

关闭编辑器

circleEditor.close();

 

移除圆形

circle.hide();

 

圆形编辑器效果图:

 

2、  折线、多边形编辑插件 (AMap.PolyEditor)

 加入多边形

var arr=new Array();//经纬度坐标数组
arr.push(new AMap.LngLat("116.403322","39.920255"));
arr.push(new AMap.LngLat("116.410703","39.897555"));
arr.push(new AMap.LngLat("116.402292","39.892353"));
arr.push(new AMap.LngLat("116.389846","39.891365"));
polygon=new AMap.Polygon({
path:arr, //设置多边形轮廓的节点数组
strokeColor:"#0000ff",
strokeOpacity:0.2,
strokeWeight:3,
fillColor: "#f5deb3",
fillOpacity: 0.35
});
//地图上加入多边形
mapObj.addOverlays(polygon);

 

开启多边形编辑器

//构造多边形编辑对象,并开启多边形的编辑状态
mapObj.plugin(["AMap.PolyEditor"],function(){
polygonEditor = new AMap.PolyEditor(mapObj,polygon);
polygonEditor.open();
});

 

关闭多边形编辑器,并移除多边形

    polygonEditor.close();
polygon.hide();

 

多边形编辑器效果图:

 

3、  鼠标工具插件 (AMap.MouseTool)

鼠标工具有9种,就不一一举栗子了。

 

 

加入鼠标工具

mapObj.plugin(["AMap.MouseTool"],function(){        //鼠标工具插件
mousetool = new AMap.MouseTool(mapObj);
});

 

栗子1:鼠标打点工具

mousetool.marker(); //使用鼠标工具,在地图上画标记点

 

栗子2:鼠标測距工具

mousetool.measureArea();

 

栗子3:鼠标画圆形

mousetool.circle();

 

 

栗子4:鼠标画矩形

mousetool.rectangle();

 

……

……

……

之后的都不一一举例了。大家查一下类參考。直接换个类名即可。

 

关闭鼠标工具

mousetool.close(true);

 

4、  距离量測插件 (AMap.RangingTool)

 创建測距插件。而且先隐藏。

    mapObj.plugin(["AMap.RangingTool"],function(){
ruler = new AMap.RangingTool(mapObj);
AMap.event.addListener(ruler,"end",function(e){
ruler.turnOff();
});
});

 

打开并显示測距工具

ruler.turnOn();

 

隐藏測距工具

ruler.turnOff();
mapObj.clearMap();

 

预览效果

 

5、  地图类型切换插件 (AMap.MapType) 

mapObj.plugin(["AMap.MapType"],function(){  //加入地图类型切换插件
//地图类型切换
mapType= new AMap.MapType({defaultType:2,showRoad:true});
mapObj.addControl(mapType);
});

效果图预览

 ----------------------------------------------------------------------------------------------------------

第三部分:自己定义插件

首先定义一个命名空间

//定义一个插件类 homeControlDiv,AMap为命名空间
AMap.homeControlDiv=function(){
}

然后往里面填充你的内容。包括功能、事件

AMap.homeControlDiv.prototype = {
addTo: function(map, dom){
dom.appendChild(this._getHtmlDom(map));
},
_getHtmlDom:function(map){
this.map=map;
// 创建一个能承载控件的<div>容器
var controlUI=document.createElement("DIV");
controlUI.style.width='80px'; //设置控件容器的宽度
controlUI.style.height='20px'; //设置控件容器的高度
controlUI.style.backgroundColor='white';
controlUI.style.borderStyle='solid';
controlUI.style.borderWidth='2px';
controlUI.style.cursor='pointer';
controlUI.style.textAlign='center'; // 设置控件的位置
controlUI.style.position='absolute';
controlUI.style.left='120px'; //设置控件离地图的左边界的偏移量
controlUI.style.top='5px'; //设置控件离地图上边界的偏移量
controlUI.style.zIndex='300'; //设置控件在地图上显示 // 设置控件字体样式
controlUI.style.fontFamily='Arial,sens-serif';
controlUI.style.fontSize='12px';
controlUI.style.paddingLeft='4px';
controlUI.style.paddingRight='4px';
controlUI.innerHTML="返回中心"; // 设置控件响应点击onclick事件
controlUI.onclick = function(){
map.setCenter(new AMap.LngLat(116.404, 39.915));
}
return controlUI;
}
}

最后将这个控件加入到地图上:

var homeControl=new AMap.homeControlDiv(mapObj); //新建自己定义插件对象
mapObj.addControl(homeControl); //地图上加入插件

 隐藏这个自己定义控件:(直接对控件整个div进行隐藏)

controlUI.style.display='none';

 

 ------------------------------------------------------------------------------------------------------

第四部分:效果展示

http://zhaoziang.com/amap/zero_2_1.html

学到新知识了?快来2014高德LBS应用大赛操练起来吧!

【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨的更多相关文章

  1. 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...

  2. 【高德地图API】从零開始学高德JS API(五)路线规划——驾车|公交|步行

    先来看两个问题:路线规划与导航有什么差别?步行导航与驾车导航有什么差别? 回答: 1.路线规划,指的是为用户提供3条路线推荐.[高德]在提供路线规划的时候,会提供用户自己定义路线规划功能,这是别家没有 ...

  3. 【高德地图API】从零開始学高德JS API(四)搜索服务——POI搜索|自己主动完毕|输入提示|行政区域|交叉路口|自有数据检索

    地图服务.大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.假设说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血. 有个各种各样 ...

  4. 关东升的《从零開始学Swift》即将出版

    大家好: 苹果2015WWDC大会公布了Swift2.0,它较之前的版本号Swift1.x有非常大的变化.所以我即将出版<从零開始学Swift><从零開始学Swift>将在&l ...

  5. 从零開始学Swift之Hello World进化版

    上节课,也就是昨晚啦,我们学习到从零開始学Swift之Hello World.那一节仅仅有一句代码,大家会认为不够过瘾. 那么这节课,就给大家来多点瘾货吧! 先上图! //var 代表变量的类型, s ...

  6. 《PHP 5.5从零開始学(视频教学版)》内容简单介绍、文件夹

    <PHP 5.5从零開始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零開始学(视频教学版 ...

  7. 从零開始学android&lt;数据存储(1)SharedPreferences属性文件.三十五.&gt;

    在android中有五种保存数据的方法.各自是: Shared Preferences Store private primitive data in key-value pairs. 相应属性的键值 ...

  8. 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

    RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...

  9. 从零開始学android&lt;SeekBar滑动组件.二十二.&gt;

    拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object    ↳ an ...

随机推荐

  1. Mysql 查看连接数,状态的相关命令

    命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列 ...

  2. [xampp] phpmyadmin 设置登录密码

    $ cd /opt/lampp/bin $ ./mysqladmin -u root password 'new_password' $ vim ../phpmyadmin/config.inc.ph ...

  3. 微信token

    <?php define("TOKEN", "lmaster"); function checkSignature() { //从GET参数中读取三个字段 ...

  4. 一个LaTeX 中文文档的简单而实用的模板

    网上找的一个latex中文模板,感觉很简单,在我机器上有点小问题,完善记录一下. %要运行该模板,LaTex需要安装CJK库以支持汉字. %字体大小为12像素,文档类型为article %如果你要写论 ...

  5. ubuntu 16.04.1 LTS redis安装配置

    编译安装:apt-get updateapt-get install build-essential tclwget http://download.redis.io/redis-stable.tar ...

  6. memcahced部署

    Memcached是一个内存数据库,数据以key/value键值对的形式保存在服务器预先分配的内存区块中,由于Memcached服务自身没有对缓存的数据进行持久化存储的设计,因此,在服务器端的Memc ...

  7. Mysql数据库的安装及配置

    本文转载自http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建 ...

  8. 今天升级Xcode 7.0 bata发现网络访问失败。

    今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Securit ...

  9. 微软自家的.Net下的JavaScript引擎——ClearScript

    之前我介绍过一个开源的.Net下的Javascript引擎Javascript .NET,今天发现微软自己也开源了一个JavaScript引擎——ClearScript(当然,也支持VB Script ...

  10. Tomcat环境下配置数据源

    两种方式,图形化和字符型配置,图形化需要部署一个应用,字符型配置如下: 需要文件 mysql-connector-java-5.1.16-bin.jar Oracle需要classes12.jar文件 ...