关于高德地图只显示某一行政区域

本文介绍了如何在HTML和JavaScript中使用高德地图API创建3D地图,并通过行政区域搜索功能获取南京市的边界,配合红点标记和遮罩效果,展示了地图定位与区域检索的实用技巧。
<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>地图遮罩</title>
    <style>
        html,
        body,
        #container {
            margin: 0;
            height: 100%;
        }
    </style>
</head>

<body>
    <div id="container"></div>
    <script
        src="https://webapi.amap.com/maps?v=1.4.15&key=key值&plugin=AMap.DistrictSearch"></script>
    <script>
        var map = new AMap.Map('container', {
            zoom: 9.5,
            center: [118.78, 32.04],
            pitch: 0,
            viewMode: '3D',
            //设置地图背景图 
            // mapStyle:'amap://styles/40035571fa9fdd05a26fe1b05f48fdc9'

        });
        //标记点

        var maker = new AMap.Marker({
            position: [118.7799, 31.99202],
            icon: new AMap.Icon({
                image: "./redcamera.png",
                size: new AMap.Size(22, 28),  //图标所处区域大小
                imageSize: new AMap.Size(22, 28) //图标大小
            })

        })

        var maker2 = new AMap.Marker({
            position: [118.8, 31.99202],
            icon: new AMap.Icon({
                image: "./redcamera.png",
                size: new AMap.Size(22, 28),  //图标所处区域大小
                imageSize: new AMap.Size(22, 28) //图标大小
            })

        })

        map.add(maker);
        map.add(maker2);


        //高德地图行政区域查询
        new AMap.DistrictSearch({
            extensions: 'all',//返回完整的行政区边界点坐标
            subdistrict: 0,//不返回下级行政区
        }).search('南京市', function (status, result) {
            // 外多边形坐标数组和内多边形坐标数组
            var outer = [
                new AMap.LngLat(-360, 90, true),
                new AMap.LngLat(-360, -90, true),
                new AMap.LngLat(360, -90, true),
                new AMap.LngLat(360, 90, true),
            ];
            var holes = result.districtList[0].boundaries

            var pathArray = [
                outer
            ];
            pathArray.push.apply(pathArray, holes)
            var polygon = new AMap.Polygon({
                // pathL: pathArray,
                //线条颜色,使用16进制颜色代码赋值。默认值为#006600
                strokeColor: '#A0A9C2',
                strokeWeight: 2,
                //轮廓线透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
                strokeOpacity: 1,
                //多边形填充颜色,使用16进制颜色代码赋值,如:#FFAA00
                fillColor: '#E8EBF3',
                //多边形填充透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
                fillOpacity: 1,
                //轮廓线样式,实线:solid,虚线:dashed
                strokeStyle: 'solid',
                /*勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在    
                  ie9+浏览器有效 取值: 
                  实线:[0,0,0] 
                  虚线:[10,10] ,[10,10] 表示10个像素的实线和10个像素的空白(如此反复)组成的虚线
                  点画线:[10,2,10], [10,2,10] 表示10个像素的实线和2个像素的空白 + 10个像素的实 
                  线和10个像素的空白 (如此反复)组成的虚线
                strokeDasharray: [10, 2, 10]*/
            });
            polygon.setPath(pathArray);
            map.add(polygon);
        })
        //设置路况信息
        // features: ['bg', 'road', 'building', 'point'];
        // map.setFeatures(features);
        map.setFeatures([]);

    </script>
</body>

</html>
### 高德地图如何仅显示本省境内的高速公路 高德地图本身并未提供直接筛选并仅显示某省境内高速公路的功能,但可以通过以下方式实现类似效果: #### 自定义地图样式 高德地图开放平台提供了地图样式自定义功能,允许开发者隐藏或显示特定地图元素。虽然该功能无法直接“筛选”出某一省份的高速公路,但可以通过设置地图样式来突出显示高速公路,同时隐藏其他道路和地名信息,从而提升视觉聚焦效果。例如,可以设置地图样式为仅显示高速公路,隐藏普通道路、兴趣点、地名等非必要信息[^1]。 ```javascript // 示例:在Web端使用JavaScript API 设置地图样式 var map = new AMap.Map('container', { features: ['bg', 'point', 'road'], // 保留背景、兴趣点和道路信息 mapStyle: 'amap://styles/自定义样式ID' // 使用自定义的地图样式 }); ``` #### 利用行政区划边界数据 若需仅显示某一省份内的高速公路,可以通过叠加行政区划边界数据,并结合地理围栏(GeoFence)功能实现。具体而言,可以获取目标省份的行政边界坐标数据,将其作为地理围栏区域,仅在该区域显示高速公路信息。 ```javascript // 示例:设置地理围栏 AMap.plugin(['AMap.GeoFence'], function () { var geoFence = new AMap.GeoFence([ [ [113.0, 23.0], [114.0, 23.0], [114.0, 22.0], [113.0, 22.0] ] // 示例坐标,替换为实际省份边界 ]); geoFence.on('complete', function (event) { console.log('进入围栏区域'); }); geoFence.on('leave', function (event) { console.log('离开围栏区域'); }); }); ``` #### 数据叠加与图层控制 在某些高级应用中,如需仅显示本省的高速公路,还可以通过外部数据叠加方式实现。例如,获取高速公路的矢量数据(如通过合法爬取或公开数据源),然后仅在地图上绘制该省份范围内的高速公路线段,而加载其他区域的道路信息[^3]。 ```javascript // 示例:加载自定义矢量高速公路数据 var pathSimplifier = new AMap.PathSimplifier({ map: map, getPath: function (pathData) { return pathData.path; }, getHoverTitle: function (pathData) { return pathData.name; } }); // 添加某省内的高速公路数据 pathSimplifier.setData([ { name: 'G4京港澳高速(某省段)', path: [[113.5, 23.1], [113.6, 23.2], [113.7, 23.3]] } ]); ``` #### 注意事项 - 自定义地图样式适用于Web和移动端SDK,普通网页嵌入地图支持此功能。 - 使用地理围栏或外部数据叠加时,需确保数据合法合规,并进行坐标匹配和边界校准。 - 高德地图默认样式中,高速公路通常以红色或橙色显示,可通过样式配置强化这一特征[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值