vue 引用百度地图

address.vue

<template>
  <div>
    <!-- 地图 -->
    <el-drawer
      :visible.sync="type1"
      direction="rtl"
      size="50%"
      append-to-body
      class="map-drawer"
      :before-close="beforeClose"
    >
      <div style="width: 100%;height: 100%;">
        <div slot="title" class="title_info_weight">选择地点</div>
        <el-input
          placeholder="请输入关键字"
          suffix-icon="el-icon-search"
          v-model="keyword"
          style="
            z-index: 10;
            top: 10px;
            position: absolute;
            left: 16px;
            width: 350px;
          "
        >
        </el-input>
        <baidu-map
          class="bm-view"
          :center="mapData.center"
          :zoom="mapData.zoom"
          @ready="mapHandler"
          @click="getLocation"
          :scroll-wheel-zoom="true"
        >
          <bm-local-search
            :keyword="keyword"
            :auto-viewport="true"
            :location="location"
            :panel="false"
            style="display: none"
            @searchcomplete="onSearchComplete"
            @infohtmlset="onInfohtmlset"
            @markersset="onMarkersset"
          ></bm-local-search>
          <!-- 点击加点 -->
          <!-- <bm-marker :position="{ lng: longitude, lat: latitude }"></bm-marker> -->
          <!-- 弹框 -->
          <bm-info-window
            :position="{ lng: longitude, lat: latitude }"
            :show="infoWindowShow"
            title="请选择详细位置"
            @clickclose="infoWindowClose"
          >
            <div
              v-for="(item, index) in surroundingPois"
              :key="index"
              :class="{ activeColor: colorIndex === index }"
              @click="pointcheck(item, index)"
            >
              <p style="line-height: 1.2; font-size: 14px">{{ item.title }}</p>
            </div>
            <div
              v-if="surroundingPois.length == 0"
              style="line-height: 1.2; font-size: 14px"
            >
              {{ address.addressStr }}
            </div>
          </bm-info-window>
        </baidu-map>
      </div>
      <div class="avue-dialog__footer">
        <el-button @click="type1 = false">取 消</el-button>
        <el-button @click="onSure" type="primary">确 定</el-button>
      </div>
    </el-drawer>
  </div>
</template>

<script>
import '@riophae/vue-treeselect/dist/vue-treeselect.css'// 下拉框全局组件样式

export default {
  data() {
    return {
      //地图
      mamParams: {
        Zoom: 12
      },
      mapFrom: [98.490276, 25.020283],
      //地图数据
      colorIndex: -1,
      mapData: {
        center: { lng: 0, lat: 0 },
        zoom: 13,
      },
      BMap: null, //BMap类
      map: null, //地图对象
      mk: "", //Marker实例
      address: {
        lng: 0, //经度
        lat: 0, //纬度
        addressStr: "",
        title: "",
        province: "", // 省
        city: "", // 市
        district: "", // 区
      },
      location: "腾冲", //检索城市
      type1: false,
      latitude: "",
      longitude: "",
      surroundingPois: [], //选中位置周围数据
      infoWindowShow: false,//控制地图信息窗口显示
      keyword:"",
    }
  },
  methods:{
    //返回
    goBack() {
      this.$router.$avueRouter.closeTag();
      window.history.back();
    },
    // 点击选择地址
    onChangeCity() {
      this.$refs.cityRef.blur()
      this.type1 = true
    },
    //标注气泡内容创建后的回调函数获取气泡内的信息
    onInfohtmlset(res) {
      console.log('res', res)
      this.longitude = res.point.lng;
      this.latitude = res.point.lat;
      this.infoWindowShow = false;
      // this.address.region = res.province + res.city;
      this.eventManList.gisx = res.point.lng;
      this.eventManList.gisy = res.point.lat;
      this.address.addressStr = res.address;
    },
    onMarkersset(res) {
      //标注添加完成后的回调函数
      this.infoWindowShow = false;
    },
    //直接选点,展示附近点位
    getLocation(e) {
      this.colorIndex = -1;
      if (e.overlay) {
        this.infoWindowShow = false;
      } else {
        this.infoWindowShow = true;
      }
      this.longitude = e.point.lng;
      this.latitude = e.point.lat;
      const myGeo = new BMap.Geocoder(); // 创建地址解析器的实例
      myGeo.getLocation(e.point, (rs) => {
        this.surroundingPois = rs.surroundingPois;
        let adr = rs.addressComponents;
        // this.address.region = adr.province + adr.city + adr.district+adr.street+adr.streetNumber; // 省市区街道门牌号
        if (rs.surroundingPois.length == 0) {
          this.address.addressStr = rs.address;
        }
      });
    },
    //选择点位
    pointcheck(e, index) {
      this.colorIndex = index;
      this.address.addressStr = e.address;
    },
    //信息窗口关闭
    infoWindowClose() {
      this.latitude = "";
      this.longitude = "";
      this.infoWindowShow = false;
    },
    //地图确定按钮
    onSure() {
      this.infoWindowShow = false
      let data = [this.longitude, this.latitude, this.address.addressStr]
      this.type1 = false;
      this.$emit('onSure', data)
    },
    //地图初始化
    mapHandler({ BMap, map }) {
      this.map = map;
      this.BMap = BMap;
      this.mapData.center.lng = 98.497291;
      this.mapData.center.lat = 25.01757;
      this.mapData.zoom = 18;
    },
    onSearchComplete(res) {
      // 地图搜索回调
      this.infoWindowShow = false;
    },
    beforeClose(done) {
      this.keyword = "";
      this.infoWindowShow = false;
      // this.map.removeOverlay()
      done();
    },
  },
  created() {

  },
  mounted() {
  }
}
</script>

<style scoped></style>
<style lang="css" scoped>
::v-deep .el-button--small, .el-button--small.is-round  {
  display: none;
}

::v-deep .el-form-item__content {
  line-height: 40px;
  position: relative;
  font-size: 14px;
  margin-left: 128px;
}
.avue-form{
  width: auto !important;
  margin: 0 !important;
}
.avue-form
::v-deep .el-form-item__content {
  line-height: 40px;
  position: relative;
  font-size: 14px;
  margin-left: 0px !important;
}
.avue-form
::v-deep .el-col {
  margin-bottom: 0 !important;
}
.bm-view {
  width: 100%;
  height: 90%;
}
.activeColor {
  color: #0060ff !important;
}
</style>

main.js

 

封装成了一个组件

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

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

相关文章

Twitter广告投放技巧

明确目标受众&#xff1a; 确定你的目标受众&#xff0c;包括他们的兴趣、地理位置、年龄等。Twitter提供了广告定位选项&#xff0c;确保你的广告被展示给最相关的用户。 使用吸引人的图像和视频&#xff1a; 在Twitter上&#xff0c;图像和视频是引起关注的关键。确保你的广…

IAB视频广告标准《数字视频和有线电视广告格式指南》之 简介、目录及视频配套广告 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

写在前面 谈及到中国企业走入国际市场&#xff0c;拓展海外营销渠道的时候&#xff0c;如果单纯依靠一个小公司去国外做广告&#xff0c;拉渠道&#xff0c;找代理公司&#xff0c;从售前到售后&#xff0c;都是非常不现实的。我们可以回想一下40年前&#xff0c;30年前&#x…

吐槽FineDataLink工具Format函数处理日期转字符串格式的说明文档

一.背景 为公司师带徒的任务做些记录。 二.文档存在的问题 1.文档情况 FORMAT-格式转换- FineBI帮助文档 FineBI帮助文档 函数定义&#xff1a; FORMAT(object,format) formart的格式有哪些呢&#xff1f;我们截图看看&#xff1a; 2.文档说明不足问题 同事的需求是把时…

Kubernetes operator系列:webhook 知识学习【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列文章&#xff0c;本节会对 kubernetes webhook 知识进行学习 本文的所有代码&#xff0c;都存储于github代码库&#xff1a;https://github.com/graham924/share-code-operator-st…

记某次HVV:文件上传打入内网

免责声明 本文仅用于参考和学习交流&#xff0c;对于使用本文所提供的信息所造成的任何直接或间接的后果和损失&#xff0c;使用者需自行承担责任。本文的作者对此不承担任何责任。请在使用本文内容时谨慎评估风险并做出独立判断。谢谢&#xff01; 前言 某次地市hvv发现一个…

《天软特色高频因子》报告第12期

天软特色因子“近1月尾盘成交占比”&#xff08;A02002&#xff09;从行业角度分析&#xff0c;在基础化工、电子设备行业表现稳定&#xff0c;无论在有效性、区分度方面表现明显&#xff0c;而在非银金融、环保行业表现较差&#xff1b;从规模角度分析&#xff0c;该因子规模特…

韩国大带宽服务器的数据中心位置

很多用户会选择韩国大宽带服务器&#xff0c;那么韩国大带宽服务器的数据中心位置在哪&#xff0c;rak小编为您整理发布韩国大带宽服务器的数据中心位置。 韩国大带宽服务器的数据中心通常位于**首尔及其周边地区**。 韩国因其地理位置的优势&#xff0c;拥有丰富的网络带宽资源…

【BOM笔记】基本概述、window对象常见事件、定时器、JS执行机制、location/navigator/history对象

文章目录 1 BOM概述1.1 什么是BOM1.2 BOM的构成 2 window 对象的常见事件2.1 窗口加载事件2.2 调整窗口大小事件 3 定时器3.1 setTimeout() 定时器3.2 setInterval() 定时器3.3 this 4 JS 执行机制4.1 JS 是单线程4.2 同步和异步4.3 JS 执行机制 5 location 对象5.1 属性5.2 方…

跨境电商干货|如何在Snapchat上做电商?

Snapchat是一个与用户互动与创意内容为主的平台&#xff0c;也因其广阔的受众群体广受跨境电商卖家的喜爱&#xff0c;成为跨境出海的热门渠道之一。本文将为大家分享&#xff0c;要在Snapchat上进行电子商务&#xff0c;可以遵循以下步骤&#xff1a; 1、创建商业账户 在Snap…

EDM营销平台的核心功能?如何做精准营销?

EDM营销平台如何选择&#xff1f;怎么使用邮件营销平台优化发信&#xff1f; EDM营销平台以其独特的优势&#xff0c;成为了企业实现精准营销、提升品牌影响力的重要工具。那么&#xff0c;EDM营销平台究竟拥有哪些核心功能呢&#xff1f;接下来&#xff0c;AokSend就来一一探…

探索5个启发人心的网页设计案例,助您打造独特个人作品集!

对于网页设计师来说&#xff0c;网页设计作品集不仅是网页的门面&#xff0c;也是个人专业素养的体现。那么我们就不能掉以轻心地设计作品集了。无论是制作简单大方的作品集还是表现力极强的优秀作品集&#xff0c;设计师都必须非常努力地参考大量的设计作品来获得灵感。 国产…

【Python】【Pandas】详解Pandas模块常用函数

1. pandas简介 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来&#xff0c;享有数据分析“三剑客之一”的盛名&#xff08;NumPy、Matplotlib、Pandas&#xff09;。Pandas 已经成为 Python 数据分析的必备高级工具&#xff0c;它的…

安科瑞微电网智慧能源平台【能源规划、协调控制、经济运行】

背景 1“双碳”目标 重视能源消费侧节能减碳 碳排放权、碳资产、碳交易 2市场、行业发展 光伏建设成本降低、储能设备成本大幅下降、新能源汽车快速发展&#xff0c;大量充电桩建设 3用户需求 降低用能成本、增加能源收益、避免“能耗双控”&#xff0c;提高用电可靠性、…

展厅装修主要流程是什么

1、展厅主题 沟通是展厅装修服务的前提&#xff0c;沟通营者对企业的基本情况了解&#xff0c;影响着展厅装修的服务质量&#xff0c;所以说在为参展商提供展厅装修服务时&#xff0c;都要与参展商进行详细的洽谈。 2、现场勘探 展厅装修的首要步骤就是需要先进入展会的场馆&am…

次梯度、次梯度下降

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;点击跳转 目录 一&#xff0c;次梯度 1&#xff0c;次梯度、次微分 2&#xff0c;次梯度的性质 3&#xff0c;共轭函数和次梯度 &#xff…

[pdf]抱歉!二十三年前我们没看懂《人月神话》幻灯片-共127页

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《抱歉&#xff01;二十三年前我们没看懂《人月神话》幻灯片》-pdf文件&#xff0c;共127页 已上传至CSDN资源 也可以访问以下链接下载&#xff1a; http://www.umlchina.com/url/m…

电子学会 2023.03 Python 3级(yanpuxin)

十进制数111转换成二进制数是&#xff1f; 1、十进制数111转换成二进制数是&#xff1f;&#xff08; &#xff09; A 111 B 1111011 C 101111 D 1101111 正确答案:D 试题解析: 十进制转二进制&#xff0c;采用除二倒取余数&#xff0c;直到商为0为止。 2、某班有36人…

无人棋牌室茶室台球室自习室共享棋牌室系统开发小程序开发

项目背景 **市场概况**&#xff1a; 在当今社会&#xff0c;随着科技的不断进步和人们对自动化服务的需求增加&#xff0c;无人经营的棋牌室、茶室、台球室和自习室等概念正在逐渐受到关注。这种无人化经营模式在市场前景、应用人群、操作使用流程、技术框架设计等方面都具有一…

面具安装LSP模块时提示 Unzip error错误的解决办法

面具(Magisk Delta)安装LSP模块时提示 Unzip error错误的解决办法 ​​ 如果前面的配置都正常的话&#xff0c;可能是LSP版本有问题重新去Github下载一个最新版的吧&#xff1b;我是这么解决的。 我安装1.91那个版本的LSP就是死活安装不上&#xff0c;下载了1.92的版本一次就…

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展&#xff0c;我们现在可以使用稳定扩散技术&#xff08;Stable Diffusion&#xff09;来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤&#xff0c;以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…