• 腾讯地图撒点并默认显示点位信息


    在这里插入图片描述

    实现步骤如下:

    1、注册腾讯位置服务账号并获取 Key

    2、需要创建一个地图容器,并使用腾讯地图的 API 初始化地图。通常涉及到设置地图的中心点、缩放级别和地图样式。

    map = new TMap.Map(document.getElementById(‘container’), {
    center: center,
    zoom: 15,
    });

    3、 创建标注点图层信息,地图对象,样式,点位数组等

    var marker = new TMap.MultiMarker({
    map: map,
    //styles可定义多个样式,根据点位显示不同样式
    styles: {},
    geometries: []

    4、事件监听根据需要添加对应的事件监听

    marker.on(“mouseover”, function (evt) { }

    点击事件(click):当用户点击标注点时触发。
    鼠标悬停事件(mouseover):当鼠标悬停在标注点上时触发。
    鼠标移出事件(mouseout):当鼠标从标注点上移出时触发。
    拖动开始事件(dragstart):当开始拖动标注点时触发。
    拖动进行事件(dragging):当拖动标注点时持续触发。
    拖动结束事件(dragend):当拖动标注点结束时触发。
    右键点击事件(rightclick):当用户在标注点上右键点击时触发
    

    5、封装标注点的数据数组,首先了解geometries的数组中的对象属性都有哪些?

       id:点图形数据的标志信息,不可重复。如果id重复,后面的id会被重新分配一个新id,如果没有id会随机生成一个。
    styleId:对应于 MultiMarkerStyleHash 中的样式id。
    position:标注点的位置,类型为 LatLng。如:new TMap.LatLng(parseFloat(position.lat), parseFloat(position.lng))
    rank:标注点的图层内绘制顺序。
    properties:标注点的属性数据,类型为 Object,可根据自己需求定义属性
    

    6、撒点

    代码如下

     <div id="container"  style="width: 100%;height: 600px;"></div>
    
    <script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=XXXXXXXXX"></script>
    
    
      //初始化地图组件
        var map, infoWindow,markers = [];
        // 设定中心点坐标
        var center = new TMap.LatLng(parseFloat([[${center.lat}]]), parseFloat([[${center.lng}]]));
        map = new TMap.Map(document.getElementById('container'), {
            center: center,
            zoom: 15,
        });
        // 地图全局事件
        //     map.on("click", function(evt) {
        //         // 这里是通过获取地图点击的位置,将该位置移动至中心点
        //         map.setCenter(new TMap.LatLng(evt.latLng.getLat().toFixed(6), evt.latLng.getLng().toFixed(6)))
        //     })
        // //移除控件缩放
        // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ZOOM);
        // // 移除比例尺控件
        // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.SCALE);
        // // 移除旋转控件
        // map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ROTATION);
    
        //撒点函数
        function dropMarker(position) {
            console.log(position)
            var marker = new TMap.MultiMarker({
                map: map,
                //样式定义
                styles: {
                    //创建一个styleId为"myStyle1"的样式
                    myStyle1: new TMap.MarkerStyle({
                        "width": 50,
                        "height": 50,
                        "src": '/screen/images/aa-icon.png',
                        "anchor": { x: 25, y: 25 }
                    }),
                    myStyle2: new TMap.MarkerStyle({
                        "width": 50,
                        "height": 50,
                        "src": '/screen/images/dd-icon.png',
                        "anchor": { x: 25, y: 25 }
                    })
                },
                //多个标注点的数据数组
                geometries: position
            });
            //给每个点位创建信息框并默认打开
            var infoWindows = [];
            for (var i = 0; i < marker.getGeometries().length; i++) {
                var infoWindow1 = new TMap.InfoWindow({
                    map: map,
                    position: marker.getGeometries()[i].position,
                    content: '

    '+marker.getGeometries()[i].properties.title+' ****:'+marker.getGeometries()[i].properties.num+'

    '
    , // 设置信息窗口内容 autoClose: true }); infoWindows.push(infoWindow1); infoWindow1.open(); // 打开信息窗口 } markers.push(marker); //事件监听 // marker.on("mouseover", function (evt) { // console.log(evt.latLng) // }); } //撒点参数封装 function addMarkers(positions) { var arrPOstions=[]; var i=0; positions.forEach(function(position) { i++; arrPOstions.push( { id: position.dbId, styleId: 'myStyle1', //这个用来区分显示不同的图标 position: new TMap.LatLng(parseFloat(position.lat), parseFloat(position.lng)), properties: { //附带信息 title: position.title, address: position.address, num:position.num } } ) }); dropMarker(arrPOstions); } addMarkers(['自己的点位集合']);
  • 相关阅读:
    数据库系统原理与应用教程(070)—— MySQL 练习题:操作题 101-109(十四):查询条件练习
    微信小程序经纬度转化为具体位置(逆地址解析)
    商业地产数字化转型分析
    [机器学习]西瓜书&南瓜书学习(更新中)
    Linux登录自动执行脚本
    JavaScript解构赋值介绍
    2023年重水(氧化氘)市场规模:现状及未来发展趋
    《Fundamantals of Software Architecture》 Q&A Part3
    Microsoft Dynamics 365 CE 扩展定制 - 5. 外部集成
    前端需要注意哪些 SEO (详细)
  • 原文地址:https://blog.csdn.net/yizhousai0662/article/details/139467493