高德地图 JS API
高德地图 Web服务 API
实例中心
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值">script>
<div id="container">div>
#container {
width:300px; height: 180px; }
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
经度在前,纬度在后
var position = new AMap.LngLat(116, 39);//标准写法
var position = [116, 39]; //简写
var path = [new AMap.LngLat(116,39), new AMap.LngLat(116,40), new AMap.LngLat(117,39)] //标准写法
var path = [ [116,39], [116,40], [117,39] ]; //简写
添加 / 获取 / 移除覆盖物
添加:覆盖物有多种类型,包括点标记、矢量图形、信息窗体等,均可以使用add方法添加。
获取:可以使用getAllOverlays(type)方法获取已经添加的覆盖物。其中type参数类型包括marker、circle、polyline、polygon,缺省是返回以上所有类型所有覆盖物。
删除:使用remove方法移除覆盖物,参数可以为单个覆盖物对象,也可以是一个包括多个覆盖物的数组
// 将以上覆盖物添加到地图上
// 单独将点标记添加到地图上
map.add(marker);
// add方法可以传入一个覆盖物数组,将点标记和矢量圆同时添加到地图上
map.add([marker,circle]);
// 获取已经添加的覆盖物
map.getAllOverlays();
// 获取已经添加的marker
map.getAllOverlays('marker');
// 单独移除点标记
map.remove(marker);
// 同时移除点标记和矢量圆形
map.remove([marker,circle]);
// 使用clearMap方法删除所有覆盖物
map.clearMap();
点标记
Marker类 API
覆盖群组添加
// 构造点标记
var marker = new AMap.Marker({
icon: "xx",
position: [116.405467, 39.907761],
title: '北京',
...
});
// 多边形轮廓线的节点坐标数组
var path = [
new AMap.LngLat(116.368904,39.913423),
new AMap.LngLat(116.382122,39.901176),
new AMap.LngLat(116.387271,39.912501),
new AMap.LngLat(116.398258,39.904600)
];
var polygon = new AMap.Polygon({
path: path,
fillColor: '#fff', // 多边形填充颜色
borderWeight: 2, // 线条宽度,默认为 1
strokeColor: 'red', // 线条颜色
zIndex:''
});
map.add(polygon);
var circle = new AMap.Circle({
center: new AMap.LngLat(116.39,39.9), // 圆心位置
radius: 1000, // 圆半径
fillColor: 'red', // 圆形填充颜色
strokeColor: '#fff', // 描边颜色
strokeWeight: 2, // 描边宽度
});
map.add(circle);
鼠标工具-绘制覆盖物
使用MouseTool可以在地图上绘制Marker、Polyline、Polygon和Circle。
圆和矩形通过拖拽来绘制,其他覆盖物通过点击来绘制
map.plugin(["AMap.MouseTool"],function(){
var mouseTool = new AMap.MouseTool(map);
//使用鼠标工具,在地图上画标记点
mouseTool.marker();
});
//通过插件方式引入 AMap.MouseTool 工具
map.plugin(["AMap.MouseTool"],function(){
//在地图中添加MouseTool插件
var mouseTool = new AMap.MouseTool(map);
//用鼠标工具画多边形
var drawPolygon = mouseTool.polygon();
//添加事件
AMap.event.addListener( mouseTool,'draw',function(e){
console.log(e.obj.getPath());//获取路径/范围
});
});
多边形的绘制和编辑
圆的绘制和编辑
绘制矢量图形
同一个地图实例每次只能打开一个信息窗体。
默认信息窗体封装了关闭按钮,使用 API 默认的信息窗体样式,这个时候只需要对 InfoWindow 设定 content 属性即可,content 可以是 dom 对象,也可以是 html 识别的字符串:
通过 anchor 可以方便的设置锚点方位
给多个点添加信息窗体
// 信息窗体的内容
var content = [
""" http:="" webapi.amap.com="" images="" autonavi.png="" \"=""> ",
""padding:0px" 0px="" 4px;\"="">高德软件有限公司",
"电话 : 010-84107000 邮编 : 100102",
"地址 : 北京市望京阜通东大街方恒国际中心A座16层"
];
// 创建 infoWindow 实例
var infoWindow = new AMap.InfoWindow({
anchor: 'top-left',
content: content.join("
"), //传入 dom 对象,或者 html 字符串
isCustom: true, //使用自定义窗体
});
// 打开信息窗体
infoWindow.open(map);
console.log(that.map.getCenter());
infoWindow.open(that.map, e.lnglat);
infoWindow.open(that.map, e.target.getPosition());
infoWindow.open(map, marker.getPosition());
infoWindow.setContent(e.target.content);
覆盖物事件
DOM和自定义事件
点是否在多边形内
当需要计算指定点是否在某闭合区域内,可以使用静态方法 AMap.GeometryUtil.isPointInRing,返回布尔值。
var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
var p3 = [116.466171, 39.937977];
// 判断 p0 是否在 p1-p2-p3 围成的封闭区域内
var inRing = AMap.GeometryUtil.isPointInRing(p0, [p1, p2, p3]);
本章是做项目之前,初步对高歌地图API的了解和总结,新项目主要用到覆盖物和信息窗体,所以,上述总结,基本属于这一块儿。但其实,真正做项目,还是直接看API能更快找到答案,这章属于写都写了,不要浪费系列