Vue3 高德地图 只显示中国区域 修改国境线颜色 自定义地图 DistrictLayer


需求效果图(地图只显示中国、地图背景透明、自定义省的边界颜色、修改国境线颜色):

先创建自定义地图

链接:https://geohub.amap.com/mapstyle/index

水系不显示

区域面,字体改为白色,不透明度改为0%

其他地方按自己的需求自定义是否显示

行政区名,这里只显示了中国 国省市区名,其他全部不显示

行政区边界,这里外国国界改为不显示

背景网格线也要改为不显示

自定义地图最终效果

代码

// 引入包
<template>
    <div id="container"></div>
</template>
<script>
import { ref, shallowRef } from "@vue/reactivity";
import AMapLoader from "@amap/amap-jsapi-loader";

export default {
    setup(props, context) {
        let map = shallowRef(null);

        const ininMap = () => {
            AMapLoader.load({
                key: "Key",
                version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                AMapUI: {
                    // 是否加载 AMapUI,缺省不加载
                    version: "1.1", // AMapUI 缺省 1.1
                    plugins: ["geo/DistrictExplorer"], // 需要加载的 AMapUI ui插件
                },
                plugins: ["AMap.DistrictLayer", "AMap.Scale", "AMap.ToolBar"],
                Loca: {
                    // 是否加载 Loca, 缺省不加载
                    version: "2.0.0", // Loca 版本,缺省 2.0.0
                },
            })
                .then((AMap,AMapUI) => {
                     var defaultLayer = new AMap.createDefaultLayer();
                    let disCountry = new AMap.DistrictLayer.Country({
                        zIndex: 15,
                        SOC: "CHN",
                        depth: 0,
                        styles: {
                            "nation-stroke": "#bbdaf1",
                            "coastline-stroke": "#bbdaf1",
                            "province-stroke": "#bbdaf1",
                            "city-stroke": "#bbdaf1",
                            fill: "rgba(0,0,0,0.2)",
                        },
                    });
                    let province = new AMap.DistrictLayer.Province({
                        zIndex: 20,
                        depth: 0,
                        styles: {
                            "province-stroke": "#bbdaf1",
                            "city-stroke": "#bbdaf1",
                            fill: "rgba(0,0,0,0.2)",
                        },
                    });

                    map = new AMap.Map("container", {
                        //设置地图容器id
                        zoom: 3.9, //初始化地图级别
                        mapStyle:
                            "amap://styles/样式ID", //设置地图的显示样式
                        center: [106.284947, 38.794041],
                        layers: [
                          disCountry,
                          defaultLayer // disCountry 跟 defaultLayer 一定要搭配使用 不然只使用 disCountry 会导致不显示省市名称
                        ],
                    });
                   //province.setMap(map);  // 如果不想使用 disCountry 那也可以使用 Province 只需要取消注释这段代码即可
                   
                    // 这里使用 AMapUI.DistrictExplorer 主要是为了渲染地图国境线的颜色
                    window.AMapUI.load(['ui/geo/DistrictExplorer', 'lib/$'], function(DistrictExplorer, $) {

                        //创建一个实例
                        var districtExplorer = window.districtExplorer = new DistrictExplorer({
                            eventSupport: false, //打开事件支持
                            map: map
                        });
                    
                        districtExplorer.loadAreaNode(100000, function(error, areaNode) {
                            //清除已有的绘制内容
                            districtExplorer.clearFeaturePolygons();
                            //绘制父区域
                            districtExplorer.renderParentFeature(areaNode, {
                                cursor: 'default',
                                bubble: true,
                                strokeColor: '#bbdaf1', //线颜色
                                strokeOpacity: 1, //线透明度
                                strokeWeight: 2, //线宽
                                fillColor: "", //填充色
                                fillOpacity: 0, //填充透明度
                            });
                        });
                    });

                })
                .catch((e) => {
                    console.log(e);
                });
        };
        onMounted(() => {
            ininMap();
        });
        return {
            map,
        };
    },
};
</script>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM