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

news2024/11/27 10:27:34

先看结果
请添加图片描述
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-基本用法总结 官方文档

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

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

相关文章

【保姆级教程】PyCharm通过SSH远程连接ModelArts

文章目录 一、创建Notebook二、配置SSH三、配置远程Python解释器四、成果展示 一、创建Notebook 首先&#xff0c;找到云资源下面的 ModelArts&#xff0c;然后点击并进入 ModelArts控制台。 在ModelArts控制台中&#xff0c;点击开发环境下的 Notebook 。然后点击创建&#x…

记录一次Nginx日志偶现499的排查

背景 查看到nginx日志在整点整分的时候频繁出现 499&#xff0c;因为配置了存活检查和就绪检查&#xff0c;担心业务会出现大面积重建导致现网故障&#xff0c;所以对出现499的原因进行排查&#xff0c;记录下排查思路&#xff0c;方便以后查看。 业务链路&#xff1a; 负载均…

B/S版手术麻醉系统源码,基于php、mysql和vue2开发

手术麻醉系统是一套以数字形式与医院信息系统&#xff08;如HIS、EMR、LIS、PACS等&#xff09;和医疗设备等软、硬件集成并获取围手术期相关信息的计算机系统&#xff0c;其核心是对围手术期患者信息自动采集、储存、分析并呈现。该系统通过整合围手术期中病人信息、人员信息、…

Packet Tracer – 研究 NAT 操作

Packet Tracer – 研究 NAT 操作 目标 第 1 部分&#xff1a;通过内联网研究 NAT 操作 第 2 部分&#xff1a;研究互联网中的 NAT 操作 第 3 部分&#xff1a;执行进一步研究 拓扑图 场景 帧通过网络时&#xff0c;MAC 地址可能更改。 当数据包由配置了 NAT 的设备转发时&…

转录组和蛋白组如何关联分析?先从绘制九象限图开始

转录组和蛋白组如何关联分析&#xff1f;先从绘制九象限图开始 五种常用蛋白质组学定量分析方法对比 - 知乎 (zhihu.com) 九象限图在多组学关联分析中非常重要&#xff0c;例如我们可以用九象限图展示“转录组蛋白组”、“转录组翻译组”等关联分析中不同基因的差异表达情况。…

DotNet VOL.Core框架学习使用笔记(二)(持续更新)

2023-7-5 生成代码的列表界面&#xff0c;在数据行里增加一个操作列 查看按钮&#xff0c;打开编辑框&#xff0c;然后让编辑框成为一个只读的查看界面。 页面对应的js文件中增加如下 this.columns.push 函数内容。 按钮的点击事件 重点代码 this.edit(row); 这就是框架里编…

构建工具——webpack、vite

文章目录 构建工具Webpack使用步骤配置文件&#xff08;webpack.config.js&#xff09;插件&#xff08;plugin&#xff09; ViteVite 也是前端的构建工具使用命令构建配置文件&#xff1a;vite.config.js 构建工具 当我们习惯了在 node 中编写代码的方式后&#xff0c;在回到…

page-break-after: always打印时强制分页

page-break-before 元素在指定元素前添加分页符。 <div stylepage-break-after: always;></div> <p stylepage-break-after: always;></p>https://www.runoob.com/cssref/pr-print-pagebb.html

小样本图像目标检测研究综述——张振伟论文阅读

小样本图像目标检测研究综述——张振伟&#xff08;计算机工程与应用 2022&#xff09; 论文阅读 目前&#xff0c;小样本图像目标检测方法多基于经典的俩阶段目标检测算法Faster R-CNN作为主干网络&#xff0c;当然也有将YOLO&#xff0c;SSD一阶段目标检测算法作为主干网络的…

Android Studio实现内容丰富的安卓公交线路查询平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号084 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 开发语言&#xff1a;java 2.功能介绍 安卓端&#xff1a; …

zabbix基础3——邮箱告警

文章目录 一、环境说明二、第三方邮箱告警2.1 开启第三方邮箱SMTP服务2.2 配置用户媒介2.3 定义媒介类型2.4 配置告警方式和动作2.5 触发告警&#xff0c;测试效果 三、本地邮箱脚本3.1 服务端设置脚本3.2 设置用户媒介3.3 定义媒介类型3.4 配置告警方式动作3.4 触发告警&#…

Leetcode-每日一题【92.反转链表Ⅱ】

题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4输出&#xff1a;…

算法中的递推算法

递推算法 给定一个数的序列H0,H1,…,Hn,…若存在整数n0&#xff0c;使当n>n0时,可以用等号(或大于号、小于号)将Hn与其前面的某些项Hi(0<i<n)联系起来&#xff0c;这样的式子就叫做递推关系。 递推算法是一种简单的算法&#xff0c;即通过已知条件&#xff0c;利用特…

免费 Selenium各大浏览器驱动【谷歌chrme、火狐Firefox、IE浏览器】

aardio群 625494397 废话不多说 直接开整&#xff01; 竟然还有脸收费 服了 下载对应版本的浏览器驱动 目标网址 应用场景 Selenium库涉及到 安装selenium库 pip install selenium-i https://mirrors.aliyun.com/pypi/simple/下载对应浏览器驱动 https://registry.npmmirror.c…

The 14th Jilin Provincial Collegiate Programming Contest(暑期训练)

Attachments - The 14th Jilin Provincial Collegiate Programming Contest - Codeforces 目录 Problem A. Chord Problem B. Problem Select Problem C. String Game Problem E. Shorten the Array Problem F. Queue Problem G. Matrix Problem J. Situation Problem L. …

ESP32设备驱动-HTU31温湿度传感器驱动

HTU31温湿度传感器驱动 文章目录 HTU31温湿度传感器驱动1、HTU31介绍2、硬件准备3、软件准备4、驱动实现1、HTU31介绍 高性能 HTU31 湿度和温度组合传感器是市场上最小和最精确的湿度传感器之一。 HTU31 提供数字和模拟版本,即使在最恶劣的环境中也能提供快速响应时间、精确测…

阿里云美国服务器怎么样?

随着业务量的扩展&#xff0c;很多小伙伴的业务发展到了海外&#xff0c;那么阿里云服务器给大家提供了方便&#xff0c;那么今天我们来说一下阿里云美国服务器好不好用&#xff0c;首先阿里云在美国有两个地域供大家选择&#xff1a;美国西部1&#xff08;硅谷&#xff09;和美…

直播美颜工具和美颜SDK:从用户需求到技术实现的完整流程

随着直播行业的迅速发展&#xff0c;用户对于直播内容的质量和视觉享受有着越来越高的要求。直播美颜工具和美颜SDK作为一种技术解决方案&#xff0c;在实时视频中提供了美化和优化的功能&#xff0c;满足了用户的需求。本文将介绍直播美颜工具和美颜SDK的完整流程&#xff0c;…

STM32——GPIO配置

文章目录 一、GPIO八种模式1. 输入2. 输出3. 如何选择GPIO的模式 二、库函数GPIO配置1. 配置代码2.参数设置 一、GPIO八种模式 GPIO的输入输出是对于STM32单片机来说的。以下仅为个人粗略笔记&#xff0c;内部电路分析可参考博客https://blog.csdn.net/k666499436/article/det…

Impala3.4源码阅读笔记(二)data-cache的Lookup实现

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 正文 本文介绍Lookup的具体流程和细节&…