2023年 vue使用腾讯地图搜索、关键字输入提示、地点显示

先看结果
请添加图片描述
vue 在public文件下的index.html文件中引入:

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

弹窗组件:

<template>
  <div>
    <el-dialog
      title="位置信息"
      :visible.sync="dialogVisible"
      append-to-body
      width="66%"
      top="2vh"
      class="dialogStyle"
      @close="dialogVisible = false"
    >
      <div class="content">
        <div class="left" v-if="showType == 'add'">
          <div style="display: flex; margin-bottom: 10px">
            <el-input v-model="input" placeholder="请输入位置关键字"></el-input>
            <el-button type="primary" @click="search">搜索</el-button>
          </div>

          <div class="adressBox" v-if="adressList.length">
            <div
              v-for="(item, index) in adressList"
              :key="index"
              @click="chooseAdress(item, index)"
            >
              <span
                class="el-icon-location"
                style="font-size: 16px; color: #409eff; margin-right: 10px"
              >
              </span>
              <span :class="[item.isChoose === true ? 'check' : '']">{{
                item.title
              }}</span>
            </div>
          </div>
          <el-form ref="form" :model="form" label-width="68px">
            <el-form-item label="定位类型">
              <el-input
                style="width: 86%"
                v-model="form.mapType"
                placeholder="请输入定位类型"
              ></el-input>
            </el-form-item>
            <el-form-item label="是否常用">
              <el-switch
                v-model="form.isItCommonlyUsed"
                active-color="#13ce66"
                inactive-color="#ccc"
              >
              </el-switch>
            </el-form-item>
          </el-form>
        </div>
        <!-- 地图 -->
        <div id="map" style="width: 140%; height: 600px"></div>
      </div>

      <span slot="footer" class="dialog-footer" v-if="showType == 'add'">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="comfig">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialogVisible: false,
      input: "",
      adressList: [],
      showType: "",
      form: {
        mapType: "", //地图类型
        isItCommonlyUsed: false, //是否常用
      },
      chooseItem: {},
    };
  },
  methods: {
    show(data, type) {
      Object.assign(this.$data, this.$options.data())
      console.log(data, "data");
      this.showType = type;
      this.dialogVisible = true;
      this.$nextTick(() => {
        if (this.showType === "detail") {
          this.reserMap(data.lat, data.lng, 15);
        } else {
          if (data.lat && data.lng) {
            this.form.mapType = data.remark;
            this.form.isItCommonlyUsed = data.favorites;
            this.reserMap(data.lat, data.lng, 15);
          } else {
            this.reserMap(33.698948, 106.154273, 4);
          }
        }
      });
    },
    // 确定
    comfig() {
      this.$emit("comfig", this.chooseItem, this.form);
      this.adressList = [];
      this.dialogVisible = false;
    },

    //当我点击哪一个的时候改变背景色
    chooseAdress(data, index) {
      console.log(data, "选择的地址");
      this.chooseItem = data;
      // 取消之前选中的地址样式
      this.adressList.forEach((item, i) => {
        if (i !== index) {
          item.isChoose = false;
        }
      });
      // 设置当前选中的地址样式
      this.adressList[index].isChoose = true;
      this.$forceUpdate();
      this.reserMap(data.location.lat, data.location.lng, 15);
    },

    //地图显示
    reserMap(lat, lng, zoom) {
      const center = new qq.maps.LatLng(lat, lng);
      const mapContainer = document.getElementById("map");
      const map = new qq.maps.Map(mapContainer, {
        center: center,
        draggable: true,
        zoom: zoom,
      });
      if (zoom === 15) {
        const marker = new qq.maps.Marker({
          position: new qq.maps.LatLng(lat, lng),
          map: map,
        });
      }
    },
    // 搜索
    search() {
      const suggest = new TMap.service.Suggestion({
        pageSize: 10, // 返回结果每页条目数
        regionFix: false, // 搜索无结果时是否固定在当前城市
        servicesk: "", // key
      });
      suggest
        .getSuggestions({
          keyword: this.input,
          servicesk: "", // 签名(可在腾讯地图开放平台中拿)
        })
        .then((result) => {
          console.log(result, "搜索");
          this.adressList = result.data;
          this.adressList.forEach((item) => {
            item.isChoose = false;
          });
          // console.log(result, "搜索2");
        });
    },
  },
};
</script>

<style scoped>
.dialogStyle >>> .el-dialog__footer {
  text-align: center;
}
.dialogStyle >>> .el-dialog__body {
  padding-top: 10px;
}
.content {
  display: flex;
}
.left {
  width: 90%;
  margin-right: 20px;
}
.adressBox {
  width: 100%;
  height: 300px;
  overflow: auto;
  border: 1px solid #c5c5c5;
  border-radius: 6px;
  margin-bottom: 20px;
}
.adressBox div {
  font-size: 16px;
  padding-left: 14px;
  line-height: 38px;
  border-bottom: 1px solid #eee;
}
.adressBox div:hover {
  background: #e1e1e1;
  cursor: pointer;
}
.check {
  font-size: 18px;
  font-weight: 600;
  color: #409eff;
}
</style>

签名:
在这里插入图片描述
其他相关地图API可参考:腾讯地图api-基本用法总结 官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络编程 | 多路I/O转接服务器

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Django框架-6

向服务器传参 通过url - path传参 path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),查询字符串方式传参 http://localhost:8000?key1value1&key2value2 ;&#xff08;body&#xff09;请求体的方式传参&#xff0c;比如文…

vue2【监听器】

目录 1&#xff1a;监听器的作用 2&#xff1a;语法格式 3&#xff1a;示例 4&#xff1a;应用场景 4.1&#xff1a;axios发送请求 4.2&#xff1a;JQuery发送请求 5&#xff1a;监听器的格式&#xff1a; 5.1&#xff1a;函数格式的监听器&#xff1a; 缺点一&#x…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)三:找回密码界面及对应功能实现

一、本章内容 本章实现找回密码功能,包括短信验证码找回、邮箱验证码找回等功能,并通过node-send-email发送邮箱验证码,实现找回密码界面、接口等功能。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频

【高端设计】DDR4设计方法与仿真分析(一)

本文主要介绍了DDR4设计方法与仿真分析&#xff0c;并示范SIwave如何做DDR4的瞬时眼图、SSN、on-die de-cap影响、DBI耗电分析与规范性测试。 1.DDR4和DDR3的区别 1.1 DDR4传输速度与带宽增加 DDR3 1600/1866MHz -> DDR4 1866/3200MHz DDR3采用多点分支单流架构&#xff…

HTML基础

推荐W3school、developer.mozilla.org学习 文章目录 前言标签html标签标题标签h1-h6段落标签p换行标签br超链接标签a锚点定位图像标签img列表标签有序列表ol无序列表ul定义列表dl 表格标签表格列合并表单标签input&#xff1a;输入框文本框密码框单选按钮复选框上传文件按钮下拉…

Elasticsearch:文档版本控制和乐观并发控制

在今天的文章中&#xff0c;我来详细描述一下 Elasticsearch 文档的版本控制以及如何更新文档。你也可以阅读我之前的文章 “Elasticsearch&#xff1a;深刻理解文档中的 verision 及乐观并发控制”。 版本控制 我们知道 Elasticsearch 的每个文档都有一个相对应的版本。这个版…

html前端输入框模糊查询

1、一个页面内多个模糊查询情况&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width, initial-scale1.0, user-scalable0, minimum-scale1.0, maximum-…

geoserver加载arcgis server瓦片地图显示异常问题处理

1.全能地图下载的瓦片conf.xml格式有问题首先要修改格式&#xff0c;conf.cdi文件也需要修改格式&#xff0c;修改为UTF-8或者UTF-8无BOM编码(不同的notepadd显示不同) 2. 下载的conf.xml坐标系默认从最小级别开始&#xff0c;一定要把前几级也补全&#xff0c;从0级开始 <L…

抖音SEO矩阵源码开发(一)

前言&#xff1a; 1.抖音SEO矩阵系统源码开发 是一项技术密集型工作&#xff0c;需要对大数据处理、人工智能等领域有深入了解。该系统开发过程中需要用到多种编程语言在服务器上安装LNMP环境&#xff0c;包括Linux操作系统、Nginx、MySQL、PHP等&#xff0c;如Java、Python等…

GitHub打不开的解决方案(超简单)

在国内&#xff0c;github官网经常面临打不开或访问极慢的问题&#xff0c;不挂梯子&#xff08;VPN&#xff0c;飞机&#xff0c;魔法&#xff09;使用体验极差&#xff0c;那有什么好办法解决GitHub官网访问不了的问题&#xff1f;今天小布教你几招轻松访问github官网。 git…

自定义MVC工作原理

目录 一、MVC二、MVC的演变2.1 极易MVCController层——Servletview层——JSP缺点&#xff1a;Servlet过多、代码冗余 2.2 简易MVCController层——Servletview层——JSP缺点&#xff1a;在Servlet中if语句冗余 2.3普易MVCController层——Servletview层——JSP缺点&#xff1a…

CentOS Linux的最佳替代方案(二)_AlmaLinux OS 8.6基础安装教程

文章目录 CentOS Linux的最佳替代方案&#xff08;二&#xff09;_AlmaLinux OS 8.6基础安装教程一 AlmaLinux介绍和发展历史二 AlmaLinux基础安装2.1 下载地址2.2 安装过程 三 AlmaLinux使用3.1 关闭selinux/firewalld3.2 替换默认源3.3 安装一些必要工具 CentOS Linux的最佳替…

uniapp - [全端兼容] 多选弹框选择器,弹框形式的列表多选选择器组件插件(底部弹框式列表多选功能,支持数据回显、动态数据、主题色等配置)

前言 网上的教程都太乱了,各种不兼容且 BUG 太多,注释也没有很难进行改造。 本文 实现了 uniapp 全端兼容的弹框多选选择器,从底部弹出列表项进行多选(可回显已选中和各种主题色、样式配置), 您可以直接复制代码,稍微改改样式就能用了。 如下图所示,数据列表(支持接口…

Centos7.9通过expect脚本批量修改H3C交换机配置

背景&#xff1a; 公司有几百台H3C二层交换机设备&#xff0c;当需要批量更改配置时非常的消耗工作量 解决&#xff1a; 通过一台Linux服务器&#xff0c;编写shell脚本&#xff0c;模拟Telnet至各台交换机&#xff0c;让一切变的很容易 1.首先在安装Telnet服务前需要检测centO…

途乐证券|股票低开好还是高开好?股票低开高走再回落什么意思?

对于一向不涨的股票&#xff0c;出资者常常感到困惑和不安。那么一向不涨的股票要留吗&#xff1f;什么股票更简单上涨&#xff1f;为我们预备了相关内容&#xff0c;以供参阅。 一向不涨的股票要留吗&#xff1f; 一向不涨的股票要不要留没有一个绝对的答案&#xff0c;出资者…

java开发微信公众平台之素材上传

微信公众平台官方文档 我在本地使用工具请求接口一切正常。 当我开始写代码的时候 我蒙了 后台怎么模拟form表单上传图片 放参考文章链接https://blog.csdn.net/subaiqiao/article/details/122059076 首先引入依赖 <dependency><groupId>com.squareup.okhttp3&l…

软件测试的生命周期、Bug

一、软件测试的生命周期 1、软件的生命周期&#xff1a; 需求分析&#xff1a;分析需求是否正确、完整。 设计&#xff1a;项目的上线时间、开始开发时间、测试时间、人员... 计划&#xff1a;设计技术文档、进行UI设计... 编码&#xff1a;写代码&#xff08;实现用户需求&am…

已上架的App在AppStore上无法搜索到的问题

已上架的App在AppStore上无法搜索到的问题 在AppStore上搜不到已经上架的应用程序可以采取以下解决办法&#xff1a; 拨打iTunes提供的支持电话&#xff1a;4006-701-855&#xff08;中国时间9:00-17:00&#xff09;。发送邮件给Review团队&#xff0c;在iTunes Connect登录后…

堆排序算法及其稳定性分析

堆排序算法及其稳定性分析 什么是堆排序&#xff1f; 堆排序是利用数据结构堆而设计的一种排序算法。 堆分为两种&#xff0c;大顶堆和小顶堆。 所谓大顶堆就是每个节点的值都大于或者等于其左右孩子节点的值。 小顶堆则是相反的&#xff0c;每个节点的值都小于或者等于其…