腾讯地图基本使用(撒点位,点位点击,弹框等...功能) 搭配Vue3

news2024/11/17 23:40:04

腾讯地图的基础注册账号 展示地图等基础功能在专栏的上一篇内容 大家有兴趣可以去看一看

今天说的是腾讯地图的在稍微一点的基础操作 话不多说 直接上代码

var marker = ref(null)
var map 
var center = ref(null)
// 地图初始化
const initMap = () => {
    //定义地图中心点坐标     
     center.value = new TMap.LatLng(30.589184, 114.29689)
    //定义map变量,调用 TMap.Map() 构造函数创建地图

     map = new TMap.Map(document.getElementById('container'), {
        center: center.value,//设置地图中心点坐标
        zoom: 6,   //设置地图缩放级别
        mapStyleId: 'style1', //设置地图样式
    });


    //创建并初始化MultiMarker
     marker = new TMap.MultiMarker({
        map: map,  //指定地图容器
        //样式定义
        styles: {
            //创建一个styleId为"myStyle"的样式(styles的子属性名即为styleId)
            //将不同的作物指定为不同的样式
            myStyleOne: new TMap.MarkerStyle({
               "width": 25,
                "height": 35,
                 "src": markImgOne,
                "anchor": { x: 16, y: 32 }
            }),
            myStyleTwo: new TMap.MarkerStyle({
                "width": 25,
                "height": 35,
                "src": markImgTwo,
                "anchor": { x: 16, y: 32 }
            }),
            myStyleThere: new TMap.MarkerStyle({
                "width": 25,
                "height": 35,
                "src": markImgThere,
                "anchor": { x: 16, y: 32 }
            }),
        },
        //点标记数据数组
        geometries: convertedPoints.value
     });
    console.log('坐标数据',convertedPoints.value);
    //初始化infoWindow
    var infoWindow = new TMap.InfoWindow({
        map: map,
        position: new TMap.LatLng(39.984104, 116.307503),
        offset: { x: 0, y: -32 } //设置信息窗相对position偏移像素,为了使其显示在Marker的上方
    });
    infoWindow.close();//初始关闭信息窗关闭
    //监听标注点击事件
    marker.on("click", function (evt) {
        if (iconClidk.value == true) {
            // console.log(evt, '点位点击信息');
            projectInfo.value = { id: '3', name: '湖北省公租房管理第三方评价项目 ·' + evt.geometry.properties.title, sonTask: evt.geometry.properties.num, problem: '1', headName: '王五', phone: "18337391968", }
        }
        //设置infoWindow
        // infoWindow.open(); //打开信息窗
        // infoWindow.setPosition(evt.geometry.position);//设置信息窗位置
        // //将信息与标记点关联起来
        // infoWindow.setContent(evt.geometry.properties.title);//设置信息窗内容
        // console.log(evt)
    })
    //移除控件缩放
    map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ZOOM);
    // 移除比例尺控件
    map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.SCALE);
    // 移除旋转控件
    map.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ROTATION);

}

这个大家看起来都没有难度)(包含点位点击和弹框)  重要的是撒点位时的数据处理 和 图标类别的区分显示

这是后后端返回的数据 现在处理成想要的格式 

const getLocationAndStatusFn = () => {
     let params = { projectId: projectId.value }
    getLocationAndStatus(params).then(res => {
        console.log(res, '获取各位置及状态');  
        if (res.code == 200 && res.data.length > 0) {
            console.log(res,'点位信息');
            positionArr.value = res.data
//点位数据
            convertedPoints.value =  positionArr.value.map(item => {
                const [longitude, latitude] = item.position[0].split(',');
                // 设置已超时 已完成 进行中图标样式
                if (item.isOvertime == false) {
                    if (item.status == '0' || item.status == '1' || item.status == '2' || item.status == '3') {
                        styleIdValue.value = 'myStyleTwo'; // 根据status值设置样式
                    } else if (item.status == '4' || item.status == '5') {
                        styleIdValue.value = 'myStyleOne'; // 根据status值设置样式
                    }
                } else { 
                    styleIdValue.value = 'myStyleThere';
                }
         
                // if(item.)
                return {
                    id: item.district_id,
                    styleId: styleIdValue.value,  //这个用来区分显示不同的图标
                    position: new TMap.LatLng(parseFloat(latitude), parseFloat(longitude)),
                    properties: {  //附带信息
                        title: item.name,
                        address: item.district,
                        taskId: item.taskId,
                        status: item.status
                    }
                };
            });
        }
    })
}

 最后处理完格式是这样的

处理完数据 大家可以看到我在第一张代码里定义了3中样式的图片 当时我刚写的时候 图片死活出不来 只会显示腾讯地图的默认的红色图标 最后找到解决办法

// 地图点位图标
import markImgOne from '@/assets/visualization/icon/01.png';
import markImgTwo from '@/assets/visualization/icon/02.png';
import markImgThere from '@/assets/visualization/icon/03.png';

你的点位图片要先引入才能使用 

最后是设置中心点方法 

//设置中心点城市
function setCenter(lat, lng, xiaoqu) {
    map.setCenter(new TMap.LatLng(lat, lng))
    if (xiaoqu == 1) {
//这个是设置地图的缩放层级
        map.easeTo({ zoom: 12 }, { duration: 2000 })
    } else if (xiaoqu == 0) {
        map.easeTo({ zoom: 7 }, { duration: 2000 })
    } else { 
          map.easeTo({ zoom: 17 }, { duration: 2000 })
    }
}

最后看一下效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DocArray 近期更新:全面支持 Pydantic V2

DocArray 是一个专门为多模态数据的表示、传输、存储和检索而设计的 Python 库。其设计专为多模式人工智能应用程序的开发而量身定制,可保证与广泛的 Python 和机器学习生态系统的无缝集成。在 2022 年 1 月,DocArray 在 Apache License 2.0 下公开分发&…

ssm351校园服务平台管理系统+jsp

项目名称:ssm351校园服务平台管理系统jsp 点击这里进入源码目录 声明: 适用范围: 本文档适用于广泛的学术和教育用途,包括但不限于个人学习、毕业设计和课程设计。免责声明: 特此声明,本文仅供参考学习之用…

代码随想录算法训练营第六十天 | 739. 每日温度、496.下一个更大元素 I

739. 每日温度 链接: 代码随想录 (1)代码 496.下一个更大元素 I 链接: 代码随想录 (1)代码

Allegro如何对器件进行等距对齐操作

在用Allegro进行PCB设计时,需要经常用到对齐操作。那如何在不使用skill的情况下,对器件进行对齐操作呢? 本方法同样可对Pins,文本进行对齐操作。 使用软件自带的详细操作方法如下: (1)选择菜单Setup。 选择Application Mode(应用模式)→Placement Edit(放置编辑),…

u-boot和bootloader到底有什么区别

嵌入式软件工程师都听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。 今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别。 Bootloader Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bi…

Unity中Shader阴影的投射

文章目录 前言一、我们急需使用之前 Offset 中的Shader作为测试二、生成阴影1、添加"LightMode" "ShadowCaster"的Pass.2、appdata中声明float4 vertex:POSITION;和half3 normal:NORMAL;这是生成阴影所需要的语义.3、v2f中添加V2F_SHADOW_CASTER;用于声明…

java 通用导出接口

每个功能导出文件都单独写接口太过繁琐,出于方便大致讲讲通用导出功能的实现。 导出文件配置表,该表保存导出dto和导出文件名的对应关系等信息: TableName(value "SIMPLE_COMMON_EXPORT_TAB") public class SimpleCommonExportT…

vue3+element-plus 封装列表页,分页,排序,导出

目录 背景描述: 开发流程: 详细开发: 总结: 背景描述: web很多时候,要开发一个列表页,展示大量数据,并且提供一些交互功能,例如排序和分页,导出功能&…

嵌入式硬件库的基本操作方式与分析

本次要介绍的开源软件是 c-periphery: https://github.com/vsergeev/c-periphery一个用 C 语言编写的硬件外设访问库。 我们可以用它来读写 Serial、SPI、I2C 等,非常适合在嵌入式产品上使用。 我们可以基于它优秀的代码框架,不断地扩展出更…

高斯分布与高斯过程

一元高斯分布 我们从最简单最常见的一元高斯分布开始,其概率密度函数为: p ( x ) 1 σ 2 π e x p ( − ( x − μ ) 2 2 σ 2 ) p(x)\frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(x)σ2π ​1​exp(−2σ2(x−μ)2​) 其中 μ \…

2023年中职组“网络安全”赛项云南省竞赛任务书

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

python接口自动化测试 —— unittest框架suite、runner详细使用

test suite 测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例 test runner 测试运行器用于执行和输出结果的组件 test suite、tes…

HP OfficeJet Pro 8020 如何更换碳粉盒

环境: HP OfficeJet Pro 8020 问题描述: HP OfficeJet Pro 8020 如何更换碳粉盒 解决方案: 更换碳粉盒 更换所有墨水不足的碳粉盒或空碳粉盒。 1.打开前挡盖,然后提起碳粉盒检修门。 打开打印机门 2.等待笔架停止后再继续操作…

外贸人必备的跨境电商常见专有名词!

不管我们在做跨境电商运营、广告或者物流的时候总会遇到很多专有名词或者缩写,但我们接收信息又总是很零散的、不系统的。 所以这边为大家详细整理了常见的专有名词,大家可以保存下来不懂的时候实时查阅噢~ 01 什么是跨境电商 跨境电商是指分属不同关境…

【C++入门系列】——类和对象

​作者主页 📚lovewold少个r博客主页 ⚠️本文重点:C入门知识点以及类和对象的初步了解 😄每日一言:实践能力是自学能力最终转化为真正价值的根本。 目录 前言 auto关键字 auto关键字新用法 auto使用细节 auto与指针和引用结…

VisualStudio(VS)设置程序的版本信息(C-C++)

一、前言 在软件开发过程中,通常需要为生成的程序添加一些重要的元数据,如版本号、公司名称和版权信息。这些信息不仅可以提供对程序的更详细描述,还可以帮助用户了解程序的来源和使用限制。在 Visual Studio (以2017为例)中,可以…

大数据请把这个分离软件推给所有后期~

相信每个后期都要这样一个烦恼,怎样单独提取人声台词?怎么样提取背景音乐,今天就给大家推荐一款超实用的人声分离软件,可以在线提取人声或背景音乐,对于做后期的小伙伴们来说简直就是神器,再也不用到处找音…

C语言指针精简版(三)

目录 字符指针变量 剑指offer中经典题: 数组指针变量 ⼆维数组传参的本质 函数指针变量 typedef关键字 函数指针数组 什么是函数指针数组? 为什么要使用函数指针数组? 转移表 计算器的⼀般实现: 使用函数指针实现&…

MyBatisPlus(二十二)代码生成器

使用场景 使用代码生成器&#xff0c;根据数据库表&#xff0c;自动生成对应的 Entity&#xff0c;Mapper&#xff0c;Service&#xff0c;Controller 。 代码 依赖 两个依赖&#xff1a; 生成器依赖模板依赖 <dependency><groupId>com.baomidou</groupId&…

思维导图Xmind2023安装教程分享

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;xmind 获取 1、解压压缩包得到以下文件。 2、如果“winmm.dll”被系统删除不见&#xff0c;打开屏幕右下角处“windows安全中心”&#xff0c;在历史记录里将已删除的还原即可。 3、以管理员身份打开“Setup”。 4、…