vue使用腾讯地图,实现点标记,搜索

效果图:
在这里插入图片描述
在这里插入图片描述

1、public文件夹下index.html添加

// public/index.html
<script src="https://map.qq.com/api/js?v=2.exp&key=你的ksy"></script>
<script src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=你的key"></script>

2、父组件

<template><el-button type="success" size="small" @click="seeMap">打开地图</el-button><TMmap ref="map" v-if="mapShow" :position="list" @PositionDegrees="degrees"></TMmap>
</template>import TMmap from "@/components/TMmap/index.vue"
export default {components: { TMmap },data() {return {list: {},mapShow: false}},methods: {seeMap() {this.list.lng = 116.404this.list.lat = 39.915this.mapShow = true// 加载完成调用this.$nextTick(()=>{this.$refs.map.MapResetting()})},// 地图搜索MapSearch() {this.$refs.map.MapSearch('故宫')},}
}

2、地图组件

<template><div><!-- 定义地图显示容器 --><div id="container"></div></div>
</template><script>export default {name: 'TMmap',props: ['position'],data() {return {map: '',markerLayer: ''}},mounted() {this.initMap()},methods: {// 初始化initMap() {const _this = this;const center = new TMap.LatLng(this.position.lat, this.position.lng)const map = new TMap.Map(document.getElementById('container'), {center: center, //设置地图中心点坐标zoom: 17.2, //设置地图缩放级别pitch: 43.5, //设置俯仰角rotation: 45 //设置地图旋转角度});this.map = map//创建并初始化MultiMarkerlet markerLayer = new TMap.MultiMarker({map: map, //指定地图容器//样式定义styles: {//创建一个styleId为"myStyle"的样式(styles的子属性名即为styleId)"myStyle": new TMap.MarkerStyle({"width": 25, // 点标记样式宽度(像素)"height": 35, // 点标记样式高度(像素)//焦点在图片中的像素位置,一般大头针类似形式的图片以针尖位置做为焦点,圆形点以圆心位置为焦点"anchor": {x: 16, y: 32}})},//点标记数据数组geometries: [{"id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id"styleId": 'myStyle', //指定样式id"position": new TMap.LatLng(this.position.lat, this.position.lng), //点标记坐标位置"properties": { //自定义属性"title": "marker1"}}]});this.markerLayer = markerLayer//绑定点击事件map.on("click",function(evt){let lat = evt.latLng.getLat().toFixed(6);let lng = evt.latLng.getLng().toFixed(6);//修改点标记的位置markerLayer.updateGeometries([{"styleId":"myStyle","id": "1","position": new TMap.LatLng(lat, lng),}])// 回显经纬度_this.$emit('PositionDegrees', {lng, lat})})},// 修改初始化中心点MapResetting() {const center = new TMap.LatLng(this.position.lat, this.position.lng)this.map.setCenter(center) // 修改地图中心点坐标this.map.setZoom(17.2) // 设置地图缩放级别//修改点标记的位置this.markerLayer.updateGeometries([{"styleId":"myStyle","id": "1","position": new TMap.LatLng(this.position.lat, this.position.lng),}])},// 初始化搜索MapSearch(val) {let markers = new TMap.MultiMarker({map: this.map,geometries: [],});let infoWindowList = Array(10);let suggest = new TMap.service.Suggestion({pageSize: 10, // 返回结果每页条目数});suggest.getSuggestions({ keyword: val, location: this.map.getCenter() }).then((res) => {if (res.data != []) {res.data.forEach((item,index) => {// let geometries = markers.getGeometries();let geometries = [];let infoWindow = new TMap.InfoWindow({map: this.map,position: item.location,content: `<h3>${item.title}</h3><p>地址:${item.address}</p>`,offset: { x: 0, y: -50 },}); // 新增信息窗体显示地标的名称与地址、电话等信息infoWindow.close();infoWindowList[index] = infoWindow;geometries.push({id: String(index), // 点标注数据数组position: item.location,});markers.updateGeometries(geometries); // 绘制地点标注markers.on('click', (e) => {infoWindowList[Number(e.geometry.id)].open();}); // 点击标注显示信息窗体})this.map.setCenter(res.data[0].location) // 修改地图中心点坐标}});}}}
</script><style>#container {width: 100%;height: 100%;}
</style>

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

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

相关文章

【LeetCode】26. 删除有序数组中的重复项

1 问题 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &…

spring Boot使用Mybatis实践

Mybatis作为一款优秀的持久层框架&#xff0c;具有简化SQL编写、灵活性、易于集成、等特点深受开发人员青睐&#xff0c;下文将为大家讲到在Spring Boot中如何使用Mybatis 1、依赖引入 数据库驱动 <dependency><groupId>mysql</groupId><artifactId>…

django系列之事务操作

Django 默认的事务行为是自动提交&#xff0c;除非事务正在执行&#xff0c;否则每个查询将会马上自动提交到数据库。 1. 全局开启事务 在 Web 里&#xff0c;处理事务比较常用的方式是将每个请求封装在一个事务中。 在你想启用该行为的数据库中&#xff0c;把 settings 配置…

YOLOv5-训练自己的VOC格式数据集(VOC、自建数据集)

YOLOv5&#xff1a;训练自己的 VOC 格式数据集 1. 自定义数据集 1.1 环境安装 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple注意&#xff1a; 安装 lxmlPillow 版本要低于 10.0.0&#xff0c;解释链接: module ‘PIL.Image’ has no attri…

Hadoop3教程(十六):MapReduce中的OutputFormat

文章目录 &#xff08;105&#xff09;OutputFormat概述&#xff08;106&#xff09;自定义OutputFormat案例需求分析&#xff08;107/108&#xff09;自定义OutputFormat案例实现自定义Mapper自定义Reducer自定义OutputFormatDriver 参考文献 &#xff08;105&#xff09;Outp…

Jetpack:012-Jetpack中的弹出菜单

文章目录 1. 概念介绍2. 使用方法2.1 DropdownMenu2.2 DropdownMenuItem 3. 示例代码3.1 代码和注释3.2 代码难点3.3 运行效果 4. 内容总结 我们在上一章回中介绍了Jetpack中标题栏相关的内容&#xff0c;本章回中主要 弹出菜单。闲话休提&#xff0c;让我们一起Talk Android …

AI系统ChatGPT源码+详细搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅱ—— 创建和添加证书模板

目录 博文摘要3. 使用 Microsoft 证书颁发机构创建 Machine SSL 和 Solution User 证书模板3.1 打开 Certificate Template Console3.2 复制模板3.3 修改 Compatibility 选项卡3.4 修改 General 选项卡3.5 修改 Extensions 选项卡3.6 修改 Subject Name 选项卡3.7 确认新模板 4…

软件工程与计算总结(十六)详细设计的设计模式

一.设计模式基础 某种意义上来说&#xff0c;设计模式就是设计经验的总结~ 设计模式不是简单的经验总结&#xff0c;更不是无中生有&#xff0c;它是经过实践反复检验、能解决关键技术难题、有广泛应用前景和能够显著提高软件质量的有效的经验总结。 每个模式都不是独立的&a…

Docker安装GitLab及使用图文教程

作者&#xff1a; 宋发元 GitLab安装及使用教程 官方教程 https://docs.gitlab.com/ee/install/docker.html Docker安装GitLab 宿主机创建容器持久化目录卷 mkdir -p /docker/gitlab/{config,data,logs}拉取GitLab镜像 docker pull gitlab/gitlab-ce:15.3.1-ce.0运行GitLa…

Linux性能优化--性能追踪:受CPU限制的应用程序(GIMP)

10.0 概述 本章包含了一个例子&#xff1a;如何用Linux性能工具在受CPU限制的应用程序中寻找并修复性能问题。 阅读本章后&#xff0c;你将能够&#xff1a; 在受CPU限制的应用程序中明确所有的CPU被哪些源代码行使用。用1trace和oprofile弄清楚应用程序调用各种内部与外部函…

Jmeter接口测试 —— jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

在启智平台上安装anconda

安装Anaconda3-5.0.1-Linux-x86_64.sh python版本是3.6 在下面的网站上找到要下载的anaconda版本&#xff0c;把对应的.sh文件下载下来 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 把sh文件压缩成.zip文件&#xff0c;拖到启智平台的调试页面 上传到平台上 un…

ndk 编译报错 find_library called with incorrect number of arguments

ndk 编译报错 C build system [configure] failed while executing: echo off "C:\Users\Administrator\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe" ^ "-HF:\jupter\jupiter_offline_cv2\libts" ^ "-DCMAKE_SYSTEM_NAMEAndroid" ^…

什么是内存泄漏?JavaScript 垃圾回收机制原理及方式有哪些?哪些操作会造成内存泄漏?

1、什么是内存泄漏&#xff1f; 内存泄漏是前端开发中的一个常见问题&#xff0c;可能导致项目变得缓慢、不稳定甚至崩溃。内存泄漏是指不再用到的内存没有及时被释放&#xff0c;从而造成内存上的浪费。 2、 JavaScript 垃圾回收机制 1&#xff09; 原理&#xff1a; JavaS…

《从菜鸟到大师之路 正则表达式 篇》

《从菜鸟到大师之路 正则表达式 篇》 正则表达式是一个强大的文本匹配工具。但是&#xff0c;对于前端初学者来说&#xff0c;众多的符号和规则可能让人难以理解。其实&#xff0c;你不需要记住所有的正则表达式语法&#xff01;本文将分享一些简单而实用的技巧&#xff0c;帮…

【C++ 学习 ㉘】- 详解 C++11 的列表初始化

目录 一、C11 简介 二、列表初始化 2.1 - 统一初始化 2.2 - 列表初始化的使用细节 2.2.1 - 聚合类型的定义 2.2.2 - 注意事项 2.3 - initializer_list 2.3.1 - 基本使用 2.3.2 - 源码剖析 一、C11 简介 1998 年&#xff0c;C 标准委员会发布了第一版 C 标准&#xff0…

vm虚拟机克隆ubuntu

1. 使用vm虚拟机自带的克隆功能 2. 选择完整克隆&#xff0c;然后选择您克隆到哪里的目录 3. 点击编辑你克隆后的虚拟机&#xff0c;点网络适配器&#xff0c;然后点高级&#xff0c;点击生成mac地址&#xff08;由于唯一&#xff0c;所以需要重新生成&#xff09; 4. 开启虚拟…

asw ec2 ssh 登录设置

使用 ssh 登录 aws ec2 主机&#xff0c;需要创建 密钥对&#xff0c;设置好安全组规则。 密钥对 ec2 -> 网络与安全 -> 密钥对 -> 创建密钥对 名称: [输入一个名称] 创建密钥对 浏览器会下载一个后缀为 .pem 的文件&#xff0c;使用 ssh 时将会用到。 安全组设置…

vue 动态数字效果 vue-animate-number

安装 vue-animate-number 插件 npm install vue-animate-number &#xff08;注&#xff1a;是npm、cnpm还是yarn根据具体项目要求&#xff09; 在 main.js 中引入 import Vue from vue import VueAnimateNumber from vue-animate-number Vue.use(VueAnimateNumber)动态使用…