import { map, AMap, onMapMounted } from './index';
|
|
// 行政区划缓存
|
var districtPolygonMap = new Map();
|
// 当前显示的区县
|
var activeDistrict = undefined;
|
export default {
|
// 绘制区县边界
|
drawDistrict(districtName, isNew) {
|
if(!districtName) return;
|
onMapMounted(() => {
|
if (!isNew && districtPolygonMap.has(districtName)) {
|
const districtPolygon = districtPolygonMap.get(districtName);
|
map.add(districtPolygon);
|
map.setFitView(districtPolygon);
|
activeDistrict = districtPolygon;
|
} else {
|
var district = new AMap.DistrictSearch({
|
extensions: 'all', //返回行政区边界坐标等具体信息
|
level: 'district' //设置查询行政区级别为区
|
});
|
district.search(districtName, function (status, result) {
|
var bounds = result.districtList[0].boundaries; //获取边界信息
|
if (bounds) {
|
for (var i = 0; i < bounds.length; i++) {
|
//生成行政区划 polygon
|
const districtPolygon = new AMap.Polygon({
|
map: map, //显示该覆盖物的地图对象
|
strokeWeight: 1, //轮廓线宽度
|
path: bounds[i], //多边形轮廓线的节点坐标数组
|
fillOpacity: 0.4, //多边形填充透明度
|
fillColor: '#0077ff',
|
strokeColor: '#CC66CC' //线条颜色
|
});
|
|
districtPolygonMap.set(districtName, districtPolygon);
|
activeDistrict = districtPolygon;
|
map.setFitView(districtPolygon, true);
|
}
|
}
|
});
|
}
|
});
|
},
|
removeDistrict() {
|
onMapMounted(() => {
|
if (activeDistrict) {
|
map.remove(activeDistrict);
|
activeDistrict = undefined;
|
}
|
})
|
}
|
};
|