更新腾讯地图

This commit is contained in:
aixianling
2021-12-22 19:31:43 +08:00
parent 87deb83ed5
commit 49bc304960

View File

@@ -1,18 +1,13 @@
<template>
<div class="gridMap">
<ai-map :map.sync="map" :lib.sync="mapLib"/>
<ai-t-map :map.sync="map" :lib.sync="mapLib"/>
<div class="drawer" ref="drawer">
<div v-if="show" class="drawer-content">
<b>网格地图</b>
<div class="tree">
<div class="input">
<el-input
placeholder="请输入网格名称"
v-model="filterText"
size="mini"
suffix-icon="el-icon-search"
>
</el-input>
<el-input placeholder="请输入网格名称"
v-model="filterText" size="mini" suffix-icon="el-icon-search"/>
</div>
<header class="header">
<span>网格列表</span>
@@ -55,14 +50,9 @@ export default {
mapLib: null,
show: true,
retryMapCount: 0,
polygons: [],
overlays: [],
drawer: false,
navList: [
// { id: 0, title: "网格员" },
{id: 1, title: "网格"},
],
activeIndex: 1,
filterText: "",
treeObj: {
treeList: [],
@@ -72,7 +62,7 @@ export default {
},
defaultExpandedKeys: [],
},
polygon: "",
path: [],
searchObj: {
onlineStatus: "",
@@ -135,28 +125,60 @@ export default {
}
},
renderGridMap(paths) {
let {map, mapLib: AMap, retryMapCount} = this
if (AMap) {
let {map, mapLib: TMap, retryMapCount} = this
if (TMap) {
const colors = ["#A194F4", "#7CBDF3", "#F3A57D", "#62D063", "#58DBDA", "#F7D151"]
map.clearMap()
const fitBounds = (latLngList) => {
// 由多边形顶点坐标数组计算能完整呈现该多边形的最小矩形范围
if (latLngList.length === 0) {
return null;
}
let boundsN = latLngList[0].getLat();
let boundsS = boundsN;
let boundsW = latLngList[0].getLng();
let boundsE = boundsW;
latLngList.forEach((point) => {
point.getLat() > boundsN && (boundsN = point.getLat());
point.getLat() < boundsS && (boundsS = point.getLat());
point.getLng() > boundsE && (boundsE = point.getLng());
point.getLng() < boundsW && (boundsW = point.getLng());
});
return new TMap.LatLngBounds(
new TMap.LatLng(boundsS, boundsW),
new TMap.LatLng(boundsN, boundsE)
);
}
if (this.polygons.length > 0) {
this.polygons.forEach(e => e.destroy())
this.polygons = []
}
let bounds = []
paths.forEach((path, i) => {
let color = colors[i % colors.length]
this.polygon = new AMap.Polygon({
path,
strokeColor: color,
strokeWeight: 2,
strokeStyle: "dashed",
strokeOpacity: 1,
fillColor: color,
fillOpacity: 0.1,
zIndex: 50,
lineJoin: "round",
lineCap: "round",
});
map.add(this.polygon);
let polygon = new TMap.MultiPolygon({
map, styles: {
default: new TMap.PolygonStyle({
showBorder: true,
borderColor: color,
borderWidth: 2,
color: this.$colorUtils.Hex2RGBA(color, 0.1),
borderDashArray: [10, 10]
})
map.setFitView();
this.eventOn()
},
geometries: [{paths: path.map(e => new TMap.LatLng(e[1], e[0]))}]
})
this.polygons.push(polygon)
bounds.push(fitBounds(path.map(e => new TMap.LatLng(e[1], e[0]))))
})
bounds = bounds.reduce((a, b) => {
return fitBounds([
a.getNorthEast(),
a.getSouthWest(),
b.getNorthEast(),
b.getSouthWest(),
]);
});
map.fitBounds(bounds, {padding: 100})
} else {
if (retryMapCount < 5) {
setTimeout(() => {
@@ -166,12 +188,6 @@ export default {
}
}
},
//地图事件绑定
eventOn() {
this.map.on("mousemove", this.showInfoMove, this);
},
showInfoMove(e) {
},
hasClass(ele, cls) {
return ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
@@ -309,7 +325,7 @@ export default {
.drawer {
width: 280px;
height: 100vh;
height: 100%;
position: absolute;
z-index: 1000;
top: 0;