摘要:覆盖物,是一张地图的灵魂。有覆盖物的地图,才是完整的地图。在一张地图上,除了底层的底图(瓦片图,矢量图),控件(有功能可操作的工具),最重要最不可缺少的就是覆盖物了。覆盖物有多种,包括,标注、折线、多边形、信息窗口、聚合marker、麻点图和图片覆盖物。本文会详细介绍每一种覆盖物的概念,添加方法,修改方法,移除方法等。最后会提供示例和源代码下载。

76292613_1.gif

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

一、标注marker

最常见的覆盖物就是标注(marker),用它可以标示出店铺的位置,你所在的位置,连锁店的分布图等,可以把标注简单理解为1个点。

在地图上增加一个标注,又称之为在地图上“打点”。打点工具在上一章《控件》中已经详细讲解,控件:http://www.cnblogs.com/milkmap/p/3707711.html 。

温馨有爱的小贴士:

标注marker的图片可以是gif图,让marker“动”起来。

1、添加标注——“可爱的赵灵儿”

76292613_2.png

icon是标注的图片地址,想用什么图片,就把图片地址放在这里。

position是标注的位置,经纬度。

76292613_3.gif

//实例化marker

functionaddMarker(){

marker=newAMap.Marker({

icon:"zhao.gif",

position:new AMap.LngLat(116.405467,39.907761)

});

marker.setMap(mapObj);//在地图上添加点

}

76292613_3.gif

2、修改标注——“一秒钟变拓跋玉儿”

76292613_4.png

setContent是用于改变文字说明,支持html5;

setPosition是用于改变标注的位置。

marker.setContent(markerContent);//更新点标记内容

marker.setPosition(new AMap.LngLat(116.391467,39.927761)); //更新点标记位置

3、清除覆盖物

对于制定marker,可以单独清除每一个覆盖物:

marker.setMap(null);

清除地图上全部覆盖物,用:

mapObj.clearMap();

二、聚合marker

1、增加一个marker

温馨小贴士:

不如icon的值为空,就会调用高德默认的marker哟,也蛮漂亮的。

76292613_5.png

76292613_3.gif

functionaddMarker2(){

marker2= newAMap.Marker({

position:(new AMap.LngLat(116.384182,39.916451)),

draggable:true, //点标记可拖拽

cursor:'move' //鼠标悬停点标记时的鼠标样式

});

marker2.setMap(mapObj);

}

76292613_3.gif

2、给marker加上动画

跳动动画

functionmarker2Cartoon(){

marker2.setAnimation('AMAP_ANIMATION_BOUNCE'); //设置点标记的动画效果,此处为弹跳效果

}

拖拽动画

拖拽动画需要在marker里面设置。

76292613_3.gif

functionaddMarker2(){

marker2= newAMap.Marker({

position:(new AMap.LngLat(116.384182,39.916451)),

draggable:true, //点标记可拖拽

cursor:'move',

raiseOnDrag:true //鼠标拖拽点标记时开启点标记离开地图的效果

});

marker2.setMap(mapObj);

}

76292613_3.gif

3、聚合marker

增加一群marker,就是聚合marker

温馨小贴士:为什么要使用聚合marker?

当marker大于500的时候,满屏幕都是密密麻麻的marker了,显得杂乱无章。

而且由于浏览器性能的关系,特别是IE6浏览器,会造成浏览器卡死的情况。

这个时候,使用麻点图或者聚合marker就可以轻松解决marker数量太多的问题。

增加一群marker:

76292613_6.jpg

76292613_3.gif

functioniJuhe(){

mapObj.clearMap();//随机向地图添加500个标注点

var mapBounds =mapObj.getBounds();var sw =mapBounds.getSouthWest();var ne =mapBounds.getNorthEast();var lngSpan = Math.abs(sw.lng -ne.lng);var latSpan = Math.abs(ne.lat -sw.lat);for (var i = 0; i < 500; i ++) {var markerPosition = new AMap.LngLat(sw.lng + lngSpan * (Math.random() * 1),ne.lat - latSpan * (Math.random() * 1));var marker = newAMap.Marker({

map:mapObj,

position:markerPosition,//基点位置

icon:"js_marker.png", //marker图标,直接传递地址url

offset:{x:-8,y:-34} //相对于基点的位置

});

markers.push(marker);

}

}

76292613_3.gif

增加marker聚合的功能:

76292613_7.png

76292613_3.gif

functionaddCluster(tag)

{if(cluster) {

cluster.setMap(null);

}if(tag==1) {var sts=[{url:"js_1.png",size:new AMap.Size(32,32),offset:new AMap.Pixel(-16,-30)},

{url:"js_2.png",size:new AMap.Size(32,32),offset:new AMap.Pixel(-16,-30)},

{url:"js_3.png",size:new AMap.Size(48,48),offset:new AMap.Pixel(-24,-45), textColor:'#CC0066'}];

mapObj.plugin(["AMap.MarkerClusterer"],function(){

cluster= newAMap.MarkerClusterer(mapObj,markers,{styles:sts});

});

}else{

mapObj.plugin(["AMap.MarkerClusterer"],function(){

cluster= newAMap.MarkerClusterer(mapObj,markers);

});

}

}

76292613_3.gif

缩小地图,marker会变得更加集中。

增加一个延时延时的功能,先添加500的marker,一秒钟后变成聚合marker。

76292613_8.png

setTimeout(function(){

addCluster(0); e

},1000);

三、麻点图

高德云图是实时渲染的,在后台更改数据后,能在前台直观的看到数据展示。

免去了切图啊,制作瓦片图,对准经纬度等一系列的麻烦。

76292613_9.png

点击创建地图

76292613_10.png

2、导入数据

手工导入数据,可视化一站式操作,适合少量点:

76292613_11.png

自动导入数据,适合大批量数据:

温馨小贴士:

第一行必须是字段名,只能是字母、数字和下划线,并且不能以数字开头。

经纬度必须分开成2个字段!

文件只支持 .csv 格式、UTF-8编码,数据量不超过 10,000 条,文件大小不超过10M、字段总数不超过 40 个。

字段命名规则:以英文字母开头,仅由英文字母、数字、下划线组成,字段名长度不超过20位。

76292613_12.png

创建表格数据,可以打开一个记事本,编码改为UFT-8模式。然后导入数据。

数据格式举例:

tag,name,lng,lat,tel,content

免费停车场,免费停车场001,116.430359,39.958175,010-52294832,停过5次没贴条

免费停车场,免费停车场002,116.279297,40.00132,010-52294832,停过1次没贴条

免费停车场,免费停车场003,116.202393,39.825413,010-52294832,停过2次没贴条

免费停车场,免费停车场004,116.564941,39.835959,010-52294832,停过7次没贴条

免费停车场,免费停车场005,116.437225,39.806426,010-52294832,停过20次没贴条

76292613_13.png

数据导入后,就是这样子的。大家点击预览,就可以获取一个url了。

然后大家可以直接用iframe的形式,把标注好的地图放到自己的网站上。

云图实时渲染:

76292613_14.png

76292613_15.png

接下来,大家如果要使用云索引,云检索,使用这个教程:

四、折线,行车记录仪,轨迹回放

1、折线

76292613_3.gif

functionaddLine(){var lineArr=new Array();//创建线覆盖物节点坐标数组

lineArr.push(new AMap.LngLat("116.368904","39.913423"));

lineArr.push(new AMap.LngLat("116.382122","39.901176"));

lineArr.push(new AMap.LngLat("116.387271","39.912501"));

lineArr.push(new AMap.LngLat("116.398258","39.904600"));

polyline=newAMap.Polyline({

path:lineArr,//设置线覆盖物路径

strokeColor:"#3366FF", //线颜色

strokeOpacity:1, //线透明度

strokeWeight:5, //线宽

strokeStyle:"solid", //线样式

strokeDasharray:[10,5] //补充线样式

});

polyline.setMap(mapObj);

}

76292613_3.gif

76292613_16.png

2、让轨迹动起来

marker3.moveAlong(lineArr,80); //开始轨迹回放

3、让轨迹暂停

marker3.stopMove(); //暂停轨迹回放

76292613_17.png

五、圆形,多边形

圆形

76292613_18.png

76292613_3.gif

//添加圆覆盖物

functionaddCircle() {

circle= newAMap.Circle({

center:new AMap.LngLat("116.403322","39.920255"),//圆心位置

radius:10000, //半径

strokeColor: "#F33", //线颜色

strokeOpacity: 1, //线透明度

strokeWeight: 3, //线粗细度

fillColor: "#ee2200", //填充颜色

fillOpacity: 0.35//填充透明度

});

circle.setMap(mapObj);

}

76292613_3.gif

多边形

76292613_19.png

76292613_3.gif

//添加多边形覆盖物

functionaddPolygon(){var polygonArr=new Array();//多边形覆盖物节点坐标数组

polygonArr.push(new AMap.LngLat("116.319809","39.956596"));

polygonArr.push(new AMap.LngLat("116.556702","39.983434"));

polygonArr.push(new AMap.LngLat("116.483917","39.845449"));

polygonArr.push(new AMap.LngLat("116.244278","39.848612"));

polygon=newAMap.Polygon({

path:polygonArr,//设置多边形边界路径

strokeColor:"#0000ff", //线颜色

strokeOpacity:0.2, //线透明度

strokeWeight:3, //线宽

fillColor: "#f5deb3", //填充色

fillOpacity: 0.35//填充透明度

});

polygon.setMap(mapObj);

}

76292613_3.gif

六、信息窗口

1、默认信息窗口

76292613_20.png

76292613_3.gif

//在指定位置打开默认信息窗体

functionopenInfo(){//构建信息窗体中显示的内容

var info =[];

info.push("

%5C%22

");

info.push("

高德软件");

info.push("电话 : 010-84107000 邮编 : 100102");

info.push("地址 : 北京市望京阜通东大街方恒国际中心A座16层

");

inforWindow= newAMap.InfoWindow({

content:info.join("
") //使用默认信息窗体框样式,显示信息内容

});

inforWindow.open(mapObj,new AMap.LngLat(116.373881,39.907409));

}

76292613_3.gif

2、自定义信息窗口

76292613_21.png

76292613_3.gif

//实例化信息窗体

var infoWindow2 = newAMap.InfoWindow({

isCustom:true, //使用自定义窗体

content:createInfoWindow('方恒假日酒店  价格:318',"地址:北京市朝阳区阜通东大街6号院3号楼 东北 8.3 公里
电话:010 64733333详细信息"),

size:new AMap.Size(300, 0),

offset:new AMap.Pixel(0, -50)//-113, -140

});//关闭信息窗体

functioncloseInfoWindow(){

mapObj.clearInfoWindow();

}//构建自定义信息窗体

functioncreateInfoWindow(title,content){var info = document.createElement("div");

info.className= "info";//定义顶部标题

var top = document.createElement("div");

top.className= "info-top";var titleD = document.createElement("div");

titleD.innerHTML=title;var closeX = document.createElement("img");

closeX.src= "close2.gif";

closeX.οnclick=closeInfoWindow;

top.appendChild(titleD);

top.appendChild(closeX);

info.appendChild(top);//定义中部内容

var middle = document.createElement("div");

middle.className= "info-middle";

middle.innerHTML=content;

info.appendChild(middle);//定义底部内容

var bottom = document.createElement("div");

bottom.className= "info-bottom";var sharp = document.createElement("img");

sharp.src= "sharp.png";

bottom.appendChild(sharp);

info.appendChild(bottom);returninfo;

}functionmyWindow(){

infoWindow2.open(mapObj,new AMap.LngLat(116.373881,39.907409));

}

76292613_3.gif

自定义信息窗口,需要CSS样式支持

76292613_3.gif

/*定义自定义信息窗体样式*/div.info{position:relative;z-index:100;border:1px solid #BCBCBC;box-shadow:0 0 10px;#B7B6B6;border-radius:8px;background-color:rgba(255,255,255,0.9);transition-duration:0.25s;}div.info:hover{box-shadow:0px 0px 15px #0CF;}div.info-top{position:relative;background:none repeat scroll 0 0 #F9F9F9;border-bottom:1px solid #CCC;border-radius:5px 5px 0 0;}div.info-top div{display:inline-block;color:#333333;font-size:14px;font-weight:bold;line-height:31px;padding:0 10px;}div.info-top img{position:absolute;top:10px;right:10px;transition-duration:0.25s;}div.info-top img:hover{box-shadow:0px 0px 5px #000;}div.info-middle{font-size:12px;padding:10px;line-height:21px;}div.info-bottom{height:0px;width:100%;clear:both;text-align:center;}div.info-bottom img{position:relative;z-index:104;}

76292613_3.gif

七、厦门鼓浪屿地图

大家可以使用图片覆盖物,实现各种园区图,厂区图,校园图,手绘风格地图等。

在网上找好手绘地图,我找到的是鼓浪屿手绘地图。把它扣空,做成png-24的透明图片。

然后确定图片的左下角和右上角。把图片贴上去。效果不错。

76292613_22.gif

76292613_3.gif

functionxmMap(){

mapObj.setZoom(15);var bounds = new AMap.Bounds(new AMap.LngLat(118.055005,24.435624), new AMap.LngLat(118.078351,24.454299)),

groundImageOpts={

opacity:1, //图片透明度

clickable: true,//图片相应鼠标点击事件,默认:false

map: mapObj //图片叠加的地图对象

};//实例化一个图片覆盖物对象

var groundImage = new AMap.GroundImage('gly.png', bounds, groundImageOpts);

mapObj.setCenter(new AMap.LngLat(118.067665,24.443946));

}

76292613_3.gif

八、源代码与示例

76292613_3.gif

地图覆盖物

python自动轨迹绘制七边形_【高德地图API】从零开始学高德JS API(三)覆盖物相关推荐

  1. python自动轨迹绘制七边形_前端系列——canvas实现按住鼠标移动绘制出轨迹

    概要 工作以来,写过vue.react.正则.算法.小程序等知识,唯独没有写过canvas,因为实在不会啊! 2018年,给自己设定一个小目标:学会canvas,达到的效果是能用canvas实现一些c ...

  2. python画轨迹曲线-python 自动轨迹绘制的实例代码

    用到的思维: 自动化思维,数据和功能分开处理,用数据驱动程序自动运行 接口化设计,数据与程序的对接方式要清晰明了 二维数据应用,应用维度组织数据,二维数据最常用 代码 # AutoTrace.py i ...

  3. python自动轨迹绘制_自动轨道图,轨迹,绘制

    需求 根据脚本来绘制图形 不是写代码而是写数据绘制轨迹 数据脚本是自动化的第一步 基本思路 ①定义数据文件格式(接口) 非常具有个性色彩 ②编写程序,根据文件接口解析参数绘制图形 ③编制数据文件 方法 ...

  4. python自动轨迹绘制_Python——自动轨迹绘制

    需求:根据脚本来绘制图形 不是写代码而是写数据来绘制轨迹 数据脚本是自动化最重要的第一步 基本思路: 步骤1:定义数据文件格式(接口) 步骤2:编写程序,根据文件接口解析参数绘制图形 步骤3:编制数据 ...

  5. python自动轨迹绘制_python day 20 自动轨迹绘制

    自动轨迹绘制 一.概述 1.自动绘制,大概就是 数据与功能代码 分离.即,在写代码的过程中,变量没有赋值,变量的值存储在文本里,每次只需要修改文本即可绘制不同的图形. 2.数据接口.即,文本中的数据的 ...

  6. html调用显示高德地图,快速上手-数据可视化 JS API | 高德地图API

    接下来我们通过一个简单的例子:『将已有的全国市县位置数据,用圆形标记在地图上』,来快速了解下 Loca 的用法吧. 1. 申请开发者 KEY 使用前,请您先申请开发者 Key,这里您可以和 JS-AP ...

  7. python多边形的绘制教程_绘制最新:python绘制封闭多边形教程_爱安网 LoveAn.com

    关于"绘制"的最新内容 聚合阅读 今天小编就为大家分享一篇python绘制封闭多边形教程,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章主要介绍了P ...

  8. python animation 轨迹_Python实例:自动轨迹绘制

    1. 问题分析 需求:根据脚本来绘制图形 Python的 turtle 库通过写代码的方式来绘图,现在我们要根据数据来绘制轨迹. 使用数据脚本时自动化最重要的第一步.例如,根据下面的几组数据绘制出的图 ...

  9. 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码

    python自动绘制轨迹怎么输入数据?#AutoTraceDraw.py import turtle as t t.title("自动轨迹绘制") t.penc自动化思维,数据和功 ...

  10. Python项目实践:自动轨迹绘制(根据脚本绘制图形)

    一.自动轨迹绘制 这里不是用turtle库写代码绘制图形,而是写程序去读取文件,解析其中的数据然后根据数据来绘制图形,使用数据脚本实现自动化. 在任何领域中,只要是希望我们的程序自动化模块化,设计相关 ...

最新文章

  1. [Java in NetBeans] Lesson 01. Java Programming Basics
  2. C++中的命名空间namespace
  3. 静态属性property的本质和应用
  4. windows7 nginx php mysql_windows7配置Nginx+php+mysql的详细教程
  5. 算法复杂度分析(下):最好、最坏、平均、均摊等时间复杂度概述
  6. 1116: 删除元素
  7. 贪吃蛇C语言源码与算法分析
  8. (13)拨云见日,闲聊哈希表
  9. 51单片机c语言教程温度计,单片机课程设计-数字温度计.doc
  10. c++基础:继承与组合!
  11. pads9.5在win10中选项字体显示不全问题解决补丁下载(网盘免费下载)
  12. POI jar包下载
  13. 使用 Arduino 烧录全新的 ATmega328P
  14. 小白量化彩票实战(1)彩票分析及爬虫双色球彩票开奖数据
  15. 苹果真伪查询_二手MacBook Pro Air等苹果笔记本验货 鉴定 基本方法 流程
  16. IDEA 2018.3版本Spring Boot 热部署
  17. WeChat 聊天记录从一台手机转移到另外一台手机的注意事项
  18. 图像形状上下文特征ShapeContexts
  19. mysql:增删改查语句大全
  20. 商城系统开发使用微信服务号和小程序那个好?

热门文章

  1. react 控制台 Maximum call stack size exceeded 如何解决
  2. 【2021 最新】100 道大厂大数据必考面试题+答案详解
  3. 等保2.0 安全计算环境 ——Windows服务器(三级系统)
  4. win10做好备份如何恢复系统
  5. 基于Java的qq截图工具设计开发(含源文件)
  6. Windows XP中的命令行界面
  7. 【综述】(MIT博士)林达华老师-概率模型与计算机视觉”
  8. 【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码 1991期】
  9. 跟我一起水疗的哥俩儿,其实挺猛的!
  10. 背单词App开发日记3