省市区县多级联动下钻echarts 地图配置项内容和展示

echarts地图边界数据的实时获取与应用,省市区县多级联动【附最新geoJson文件以及项目源码下载】

配置项如下
      /**
边界数据的实时获取与应用,省市区县多级联动【附最新geoJson文件下载】
边界数据可以实时获取,也可以结合geojson本地文件加载

geojson文件下载地址:https://hxkj.vip/demo/echartsMap/

项目GitHub地址(欢迎star):https://github.com/TangSY/echarts-map-demo

作者:TSY
作者个人空间(欢迎闲逛):https://hxkj.vip
**/

var mapData = [];
this.opts = {
    subdistrict: 1, //返回下一级行政区
    showbiz: false //最后一级返回街道信息
};
this.district = new AMap.DistrictSearch(this.opts); //注意:需要使用插件同步下发功能才能这样直接使用
this.district.search('中国', (status, result) => {
    if (status == 'complete') {
        getData(result.districtList[0], '', 100000);
    }
});


function getData(data, level, adcode) {
    var bounds = data.boundaries || [];
    if (bounds) {
        for (var i = 0, l = bounds.length; i < l; i++) {
            var polygon = new AMap.Polygon({
                map: this.map,
                strokeWeight: 1,
                strokeColor: '#0091ea',
                fillColor: '#80d8ff',
                fillOpacity: 0.2,
                path: bounds[i]
            });

        }
    }

    var subList = data.districtList || [];
    if (subList) {
        var contentSub = new Option('--请选择--');
        var curlevel = subList[0].level;
        if (curlevel === 'street') {
            let mapJsonList = this.geoJsonData.features || [];
            let mapJson = {};
            for (let i in mapJsonList) {
                if (mapJsonList[i].properties.name == this.cityName) {
                    mapJson.features = [].concat(mapJsonList[i]);
                }
            }
            mapData = [];
            mapData.push({
                name: this.cityName,
                value: Math.random() * 100,
                level: curlevel
            });
            loadMap(this.cityName, mapJson);
            this.geoJsonData = mapJson;
            return;
        }

        mapData = [];
        for (var i = 0, l = subList.length; i < l; i++) {
            var name = subList[i].name;
            var cityCode = subList[i].adcode;
            mapData.push({
                name: name,
                value: Math.random() * 100,
                cityCode: cityCode,
                level: curlevel
            });
            var levelSub = subList[i] && subList[i].level;
            contentSub = new Option(name);
            contentSub.setAttribute("value", levelSub);
            contentSub.center = subList[i].center;
            contentSub.adcode = subList[i].adcode;

        }
        loadMapData(adcode);
    }

};

function loadMapData(areaCode) {
    AMapUI.loadUI(['geo/DistrictExplorer'], DistrictExplorer => {

        //创建一个实例
        var districtExplorer = window.districtExplorer = new DistrictExplorer({
            eventSupport: true, //打开事件支持
            map: this.map
        });

        districtExplorer.loadAreaNode(areaCode, (error, areaNode) => {

            if (error) {
                console.error(error);
                return;
            }
            let mapJson = {};
            mapJson.features = areaNode.getSubFeatures();
            loadMap(this.cityName, mapJson);
            this.geoJsonData = mapJson;
        });
    });
};

function loadMap(mapName, data) {
    if (Object.keys(data).length !== 0 && data) {
        echarts.registerMap(mapName, data);
        var option = {
            visualMap: {
                type: 'piecewise',
                pieces: [{
                        max: 30,
                        label: '安全',
                        color: '#2c9a42'
                    },
                    {
                        min: 30,
                        max: 60,
                        label: '警告',
                        color: '#d08a00'
                    },
                    {
                        min: 60,
                        label: '危险',
                        color: '#c23c33'
                    },
                ],
                color: '#fff',
                textStyle: {
                    color: '#fff',
                },
                visibility: 'off'
            },
            series: [{
                name: '数据名称',
                type: 'map',
                roam: false,
                mapType: mapName,
                selectedMode: 'single',
                showLegendSymbol: false,
                visibility: 'off',
                itemStyle: {
                    normal: {
                        color: '#ccc',
                        areaColor: '#fff',
                        borderColor: '#fff',
                        borderWidth: 0.5,
                        label: {
                            show: true,
                            textStyle: {
                                color: "rgb(249, 249, 249)"
                            }
                        }
                    },
                    emphasis: {
                        areaColor: false,
                        borderColor: '#fff',
                        areaStyle: {
                            color: '#fff'
                        },
                        label: {
                            show: true,
                            textStyle: {
                                color: "rgb(249, 249, 249)"
                            }
                        }
                    }
                },
                data: mapData,
            }]
        };
        myChart.setOption(option);
    }
};
myChart.on('click', echartsMapClick);
var that = this;

function echartsMapClick(params) { //地图点击事件
    if (!params.data || params.data.level == 'street') return;
    that.cityName = params.data.name;
    that.cityCode = params.data.cityCode;
    that.district.setLevel(params.data.level); //行政区级别
    that.district.setExtensions('all');
    //行政区查询
    //按照adcode进行查询可以保证数据返回的唯一性
    that.district.search(params.data.cityCode, (status, result) => {
        if (status === 'complete') {
            getData(result.districtList[0], params.data.level, params.data.cityCode);
        }
    });
}
    
截图如下