首页 前端知识 原生html里面使用百度地图,实现标点以及掩膜效果

原生html里面使用百度地图,实现标点以及掩膜效果

2024-09-10 23:09:41 前端知识 前端哥 500 570 我要收藏

1.实现效果如下

掩膜:可以将地图上的其他地方遮挡起来,然后只显示自己想展示的地方

 话不多说上代码

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title></title>

    <link rel="stylesheet" href="./images/global.css">

    <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=百度地图的密钥需要自己申请"></script>

    <style>

        html,

        body,

        #container {

            width: 100%;

            height: 100%;

        }

    </style>

</head>

<body>

    <!-- 地图容器 -->

    <div id="container"></div>

    <script type="text/javascript">

        // GL版命名空间为BMapGL

        // 按住鼠标右键,修改倾斜角和角度

        var map = new BMapGL.Map("container"); // 创建Map实例

        map.centerAndZoom(new BMapGL.Point(120.192361, 30.862274), 13); // 初始化地图,设置中心点坐标和地图级别

        map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

        // map.setMinZoom(13);

        // map.setMaxZoom(20);

       //这块都是添加地图响应的控件

        var scaleCtrl = new BMapGL.ScaleControl(); // 添加比例尺控件

        map.addControl(scaleCtrl);

        var zoomCtrl = new BMapGL.ZoomControl(); // 添加缩放控件

        map.addControl(zoomCtrl);

        // var cityCtrl = new BMapGL.CityListControl(); // 添加城市列表控件

        // map.addControl(cityCtrl);

        var bdary = new BMapGL.Boundary();

 

 //掩膜重点就在代码这里,可以直接复制到你自己的项目中进行使用 ,只需要自己换一下绿色的目标地点      

   bdary.get('湖州市', function(rs) {

            // 绘制行政区

            for (var i = 0; i < rs.boundaries.length; i++) {

                var path = [];

                var xyArr = rs.boundaries[i].split(';');

                var ptArr = [];

                for (var j = 0; j < xyArr.length; j++) {

                    var tmp = xyArr[j].split(',');

                    var pt = new BMapGL.Point(tmp[0], tmp[1]);

                    ptArr.push(pt);

                }

                console.log(ptArr);

                var mapmask = new BMapGL.MapMask(ptArr, {

                    isBuildingMask: true,

                    isPoiMask: true,

                    isMapMask: true,

                    showRegion: 'inside',

                    topFillColor: '#5679ea',

                    topFillOpacity: 0.5,

                    sideFillColor: '#5679ea',

                    sideFillOpacity: 0.9

                });

                map.addOverlay(mapmask);

                var border = new BMapGL.Polyline(ptArr, {

                    strokeColor: '#4ca7a2',

                    strokeWeight: 3,

                    strokeOpacity: 1

                });

                map.addOverlay(border);

            }

        });

   //这个数据是我自己模拟出来渲染点使用的

        var dataList = [{

            lng: '120.091405',

            lat: '30.901617',

            icon: './images/ywb.png',

            name: '直属业务部窗口',

            address: '金盖山路66号',

            introduce: '银行(Bank),是依法成立的经营货币信贷业务的金融机构,是商品货币经济发展到一定阶段的产物。银行是金融机构之一,银行按类型分为:中央银行、政策性银行、商业银行、专营机构、投资银行、世界银行,它们的职责各不相同。',

            tp: 'https://ts1.cn.mm.bing.net/th/id/R-C.cdfbcc62d0a5d084293b968e35aa9cd1?rik=5dVjWz2np2Bz/w&riu=http://pic.baike.soso.com/p/20140211/20140211095757-1093189800.jpg&ehk=mlOCuBhfi+4U7FnGdp1ZqGlhWW1kHrqhUguldL9RFYA=&risl=&pid=ImgRaw&r=0'

        }, {

            lng: '120.279127',

            lat: '30.86632',

            icon: './images/wd.png',

            name: '织里便民中心',

            address: '吴兴大道255号',

            introduce: '银行(Bank),是依法成立的经营货币信贷业务的金融机构,是商品货币经济发展到一定阶段的产物。银行是金融机构之一,银行按类型分为:中央银行、政策性银行、商业银行、专营机构、投资银行、世界银行,它们的职责各不相同。',

            tp: 'https://ts1.cn.mm.bing.net/th/id/R-C.cdfbcc62d0a5d084293b968e35aa9cd1?rik=5dVjWz2np2Bz/w&riu=http://pic.baike.soso.com/p/20140211/20140211095757-1093189800.jpg&ehk=mlOCuBhfi+4U7FnGdp1ZqGlhWW1kHrqhUguldL9RFYA=&risl=&pid=ImgRaw&r=0'

        }]

//数据多的话可以直接采取遍历的方式直接渲染        

dataList.forEach((item) => {

            var point = new BMapGL.Point(item.lng, item.lat);

            const myIcon = new BMapGL.Icon(item.icon, new BMapGL.Size(10, 10));

            var marker = new BMapGL.Marker(point, {

                icon: myIcon,

            }); // 创建标注

            map.addOverlay(marker); // 将标注添加到地图中

          //下面这个配置是自定义点击点展开的窗口()

        

            var opts = {

                width: 400, // 信息窗口宽度

                height: 300, // 信息窗口高度

                title: item.name // 信息窗口标题

            }

            var html = `<p>地址:${item.address}</p>

             <p>介绍:${item.introduce}</p>

             <img src="${item.tp}" style="width:100%;height:150px;">

            `

            var infoWindow = new BMapGL.InfoWindow(html, opts); // 创建信息窗口对象

            //map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口


         //蓝色是添加点的点击事件

            marker.addEventListener("click", function(e) {

                this.openInfoWindow(infoWindow);

                console.log(e)

            });

        })

      //自定义地图的样式

下面是没有修改样式之前      

改了样式之后

  

      map.setMapStyleV2({

            styleId: 'ab45773f920f8854d2f84cbbddbdad87'

        });

      

    </script>

</body>

</html>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/18055.html
标签
百度dubbo
评论
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!