高德地图实现区域掩模上高亮自动轮播每个区县数据展示

1,181 阅读2分钟
文章前先直接上图需要实现的效果图,网上高德地图区域掩模的各种混合实现比较少,这里稍微记录一下自己实现过的效果供大家参考;

之前用的是高德地图1.4版本,实现区域掩模及3D效果,但是怎么把每个区域画出来(需求为街道边界也画出来),由于高德地图只有区县数据,所有需要自己再gis服务中抠出数据,数据格式跟geojson一样, 然后用画多边形方法let polygon = new AMap.Polygon({})遍历每个街道geojson; 区域掩盖的城市及区县轮廓实现方法:var district = new AMap.DistrictSearch(opts);district.search("广州市", (status, result) => {}),想画哪个区,直接把广州市改成该区名称即可,例如:"荔湾区";效果如下: 现在基本成型了,但是回到最前面的问题,想要实现每个区数据高亮展示,相对比较麻烦,我这边实现的折线是通过经纬度画的折线,数据展示面板是通过marker点,然后数据塞进去,这里讲一下实现步骤: 1.折线实现,折线是图片的话实现不了地图变大后矢量效果;所以用经纬度画折线 var newpath = [[lng1,lat1],[(lng1+lng2)/2,lat2],[lng2,lat2]]; this.polyline = new AMap.Polyline({ path: newpath, strokeColor: "#1BACFF", strokeOpacity: 1, strokeWeight: 2, strokeStyle: "solid", }); map.add(this.polyline); 其中 [lng1,lat1]为该区中心点经纬度,[lng2,lat2]为面板该去区县需要展示位置的经纬度,然后在面板位置new AMap.Marker()一个点位,icon属性置空;在marker点上添加提示数据: areaMarker.setLabel({ offset: new AMap.Pixel(20, 20), //设置文本标注偏移量 content: ‘我是XX区的数据’, direction: "right", //设置文本标注方位 }); 加上高亮的代码实现let polygon = new AMap.Polygon({})这是new出来的多边形, Polygon.setOptions({ fillOpacity: 0.28, fillColor: "#004EB7", });设置了对应的高亮;这里只要透明度跟初始化地图时候的不一样即可实现高亮; 基本实现,现在实现自动轮播,那就需要写个自动轮播函数即可, 例如: 定时器 dingshiqi(){ var timer = null clearInterval(timer) timer = setInterval(() => { 定时器 },3000) return timer } 备注:这里有个问题,由于面板展示需要在区域掩模外面,使用高德地图1.4版本时候,超出区域掩模的都被隐藏,所以最后选用2.0版本才能正常展示,但是2.0版本又不支持添加3D高度面wall。