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

在这里插入图片描述

实现步骤如下:

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: '<p style="font-weight: bold;font-size: 13px;color: #000; white-space: nowrap;">'+marker.getGeometries()[i].properties.title+' ****:'+marker.getGeometries()[i].properties.num+'</p>', // 设置信息窗口内容
                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(['自己的点位集合']);
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无言.默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值