- 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```jsonthis.polyline = new AMap.Polyline({map: this.map,path: [[107.359808, 29.680201],[107.720983, 29.702271],[107.338522, 29.962572]],borderWeight: 1, // 线条宽度,默认为 1strokeColor: '#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>### 获取覆盖物自定义属性```jsonvar marker = new AMap.Marker({position:point,map: this.map,content:content,//自定义domoffset: 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,//自定义domoffset: 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)```jsonexport 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;},
