- js API 1.45示例 https://lbs.amap.com/demo/javascript-api/example/map-lifecycle/map-show
- js API 2.0示例 https://lbs.amap.com/demo/jsapi-v2/example/map-lifecycle/map-show
- API参考手册(不同类) https://lbs.amap.com/api/javascript-api/reference/overlay
:::info 高德默认是02坐标系 后端存数据是84坐标系 84转02会有微小的偏差,所以不要多次互相转换坐标 :::
初始化地图
- https://lbs.amap.com/api/javascript-api/reference/map
this.map = new AMap.Map('container', {
zoom:11,//级别
center: [116.397428, 39.90923],//中心点坐标
viewMode:'2D',//使用2D\3D视图
mapStyle:'amap://styles/d6bf8c1d69cea9f5c696185ad4ac4c86',//自定义地图样式
});
获取屏幕可视范围四个角的经纬度
this.map.getBounds()
监听鼠标缩放级别
// 缩放级别begin=============
AMap.event.addListener(this.map, 'zoomend', () => {
/*地图级别缩放或平移后 修改当前地图缩放级别,和当前屏幕范围的坐标*/
this.arrayBounds = this.map.getBounds()
this.currenZoom = this.map.getZoom()
});
监听地图平移
AMap.event.addListener(this.map, 'moveend', () => {
/*地图级别缩放或平移后 修改当前地图缩放级别,和当前屏幕范围的坐标*/
this.arrayBounds = this.map.getBounds()
this.currenZoom = this.map.getZoom()
});
矢量图形(折线、面、圆形等覆盖物)
官方代码示例多边形 polygon
```json var polygon = new AMap.Polygon({ map: this.map, //设置多边形边界路径 path: [[107.359808, 29.680201],[107.720983, 29.702271],[107.338522, 29.962572]], strokeColor: “#6BD9FE”, //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 2, //线宽 fillColor: “#4D89FF”, //填充色 fillOpacity: 0.14//填充透明度 }); / 自定义属性 polygon.getExtData() 获取用户自定义属性/ polygon[‘layerType’] = ‘互通区域矩形’;
/ new AMap.Polygon中不写map字段则需要在外边写添加到地图实例 / //this.map.add(polygon);
/添加到数组里便于循环删除等操作/ this.polygonMarkerlist.push(polygon);
<a name="DH6RE"></a>
####
<a name="X4DJH"></a>
#### **折线** Polyline
```json
this.polyline = new AMap.Polyline({
map: this.map,
path: [[107.359808, 29.680201],[107.720983, 29.702271],[107.338522, 29.962572]],
borderWeight: 1, // 线条宽度,默认为 1
strokeColor: '#5EF3F9', // 线条颜色
});
动态画线
this.linePath.push([data.lon, data.lat])
// todo 折线总长没有限制
this.polyline.setPath(this.linePath.slice())
获取覆盖物
可以使用 getAllOverlays (type) 方法获取已经添加的覆盖物。其中type参数类型包括marker、circle、polyline、polygon,缺省是返回以上所有类型所有覆盖物。 ```json // 获取已经添加的覆盖物 map.getAllOverlays();
// 获取已经添加的marker map.getAllOverlays(‘marker’);
// 获取自定义图层 for (let j = 0; j < allOverlay.length; j++) { / 创建marker时 自定义字段 / if (allOverlay[j].layer == ‘mark_layer’) { allOverlay[j].hide(); } }
<a name="QmdMy"></a>
### 获取覆盖物自定义属性
```json
var marker = new AMap.Marker({
position:point,
map: this.map,
content:content,//自定义dom
offset: new AMap.Pixel(-17, -42),// 相对于基点的偏移位置
extData:{data:data,type:'lcd'},//自定义数据
});
this.markerList.push(marker)
/* 获取marker extData自定义的数据 */
marker.getExtData()
根据自定义属性查找矢量图删除
this.markerList.forEach(item => {
if(item.getExtData().index == index){
this.map.remove(item)
this.lineMarkerList.splice(index, 1)
}
})
setContent 覆盖物动态更改内容
let markerList = [];
var marker = new AMap.Marker({
position:[116.397428, 39.90923],
map: this.map,
content:content,//自定义dom
offset: new AMap.Pixel(-17, -42),// 相对于基点的偏移位置
extData:{data:data,type:'lcd'},//自定义数据
});
markerList.push(marker)
for(var i = 0; i > markerList.length; i++){
this.markerList[i].setContent(
`<div>自定义dom</div>`
)
}
覆盖物显示隐藏
polygon.show()
polygon.hide()
移出覆盖物
- 使用remove方法移除覆盖物,参数可以为单个覆盖物对象,也可以是一个包括多个覆盖物的数组 ```json // 单独移除点标记 map.remove(marker); // 同时移除点标记和矢量圆形 map.remove([marker,circle]);
// 使用clearMap方法删除所有覆盖物 map.clearMap();
<a name="aHLfk"></a>
### 覆盖物群组(图层)
[官方代码示例](https://lbs.amap.com/api/jsapi-v2/guide/overlays/overlaygroup)
```json
export default {
data(){
return{
map:null,
roadlineOverlayGroup: null, //覆盖物群组图层
}
},
methods:{
/* 创建拥堵图层*/
creatRoadlayGroup(){
this.roadlineOverlayGroup = new AMap.OverlayGroup();
// 统一添加到地图实例上
this.map.add(this.roadlineOverlayGroup);
},
setLineArr(){
// 绘制轨迹
let polyline = new AMap.Polyline({
map: this.map,
path: lineArr,
showDir: true,
strokeColor: "#28F", //线颜色
strokeWeight: 6, //线宽
});
// 创建覆盖物群组,传入覆盖物组成的数组
this.roadlineOverlayGroup.addOverlay(polyline);
}
}
}
//对覆盖物群组进行统一的展示隐藏操作
this.roadlineOverlayGroup.show();
this.roadlineOverlayGroup.hide();
//对覆盖物群组进行清空操作
this.roadlineOverlayGroup.setMap(null)
// 添加新的覆盖物到群组
this.roadlineOverlayGroup.addOverlay(polyline3);
// 移除群组中的一个覆盖物
this.roadlineOverlayGroup.removeOverlay(polyline1);
图层显示、隐藏、移出
- 图层显示、隐藏及移出 ```json layer.hide() // 图层隐藏
layer.show() // 图层显示
/ 通过setMap(null)可以彻底移除图层。 / layer.setMap(null);
<a name="hxJHK"></a>
### 区域查找中心点
- 经度纬度单独相加除经纬度的个数求平均值就是中心点
```json
//经纬度平均数找中心点
sumLngLat(arr) {
var s = 0;
var d = 0;
for (var i = arr.length - 1; i >= 0; i--) {
s += arr[i].lng;
d += arr[i].lat
}
var lnglat = [s / arr.length, d / arr.length];
return lnglat;
},