vue2实现百度地图定位

2023-11-09

用的是vue2的地图定位插件

https://dafrok.github.io/vue-baidu-map/#/zh/control/city-list

1.首先肯定是先下载了

npm i vue-baidu-map -S

 2.下载完记得全局引入,在main.js文件

import BaiduMap from 'vue-baidu-map'


Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: 'YOUR_APP_KEY'
})

3.开始使用,我在这做的事表格数据的每行的定位弹窗显示,当点击当前行的定位后,弹出弹窗显示地图定位点,定位点是动态跳动的,代码如下,点击如下小图标打开地图

<el-table-column label="定位">
              <template slot-scope="scope">
                <i
                  class="el-icon-location hostlocation"
                  @click="positioning(scope.row)"
                ></i>
              </template>
            </el-table-column>
 // 项圈定位打开弹窗
    positioning(row) {
      this.sign = true
      this.dialogMap = true
//时间
      this.time = row.distribute_time
//经度和纬度
      this.center.lng = parseInt(row.longitude)
      this.center.lat = parseInt(row.latitude)
    },

data中一定要先定义好字段

 dialogMap: false,//控制弹窗
      time: '',//定位点下的时间
      center: { lng: 0, lat: 0 }, //坐标
      zoom: 14,//缩放
      sign: false//弹窗开关

弹窗内容

 <el-dialog
        title="项圈定位"
        :visible.sync="dialogMap"
        width="45%"
        :closeOnClickModal="false"
        :showClose="false"
        :destroy-on-close="true"
        v-if="sign"
      >
        <div class="location-box">
          <template>
            <!-- :scroll-wheel-zoom="true":开启滚轮缩放,center:"{lng: 116.404, lat: 39.915}",格式如下,定义地图经纬度 -->
            <baidu-map
              style="height: 600px"
              class="map"
              :zoom="12"
              :center="center"
              :scroll-wheel-zoom="true"
            >
              <!-- BMAP_NORMAL_MAP:展示图片街道视图, BMAP_HYBRID_MAP:卫星和路网的混合视图-->
              <bm-map-type
                :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']"
              ></bm-map-type>
              <!-- BMAP_ANIMATION_BOUNCE:定位点跳动 -->
              <bm-marker
                :position="center"
                :dragging="true"
                animation="BMAP_ANIMATION_BOUNCE"
              >
              <!-- 时间文本 -->
                <bm-label
                  :content="time"
                  :labelStyle="{
                    color: 'black',
                    fontSize: '12px',
                    borderColor: '#fff',
                    borderRadius: 10
                  }"
                  :offset="{ width: -48, height: 28 }"
                />
              </bm-marker>
            </baidu-map>
          </template>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="cancel" size="mini">取 消</el-button>
        </span>
      </el-dialog>

完整代码

<template>
    <div class="content-box">
        <div class="container">
            <el-table :data="tableData" style="width: 100%">
                <el-table-column prop="date" label="日期" width="180"> </el-table-column>
                <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
                <el-table-column prop="address" label="地址"> </el-table-column>
                <el-table-column label="定位">
                    <template slot-scope="scope">
                        <i class="el-icon-location hostlocation" @click="positioning(scope.row)"></i>
                    </template>
                </el-table-column>
            </el-table>
            <el-dialog
                title="地图定位"
                :visible.sync="dialogMap"
                width="35%"
                :closeOnClickModal="false"
                :showClose="false"
                :destroy-on-close="true"
                v-if="sign"
            >
                <div class="location-box">
                    <template>
                        <!-- :scroll-wheel-zoom="true":开启滚轮缩放,center:"{lng: 116.404, lat: 39.915}",格式如下,定义地图经纬度 -->
                        <baidu-map style="height: 400px" class="map" :zoom="12" :center="center" :scroll-wheel-zoom="true">
                            <!-- BMAP_NORMAL_MAP:展示图片街道视图, BMAP_HYBRID_MAP:卫星和路网的混合视图-->
                            <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']"></bm-map-type>
                            <!-- BMAP_ANIMATION_BOUNCE:定位点跳动 -->
                            <bm-marker :position="center" :dragging="true" animation="BMAP_ANIMATION_BOUNCE">
                                <!-- 时间文本 -->
                                <bm-label
                                    :content="time"
                                    :labelStyle="{
                                        color: 'black',
                                        fontSize: '12px',
                                        borderColor: '#fff',
                                        borderRadius: 10
                                    }"
                                    :offset="{ width: -48, height: 28 }"
                                />
                            </bm-marker>
                        </baidu-map>
                    </template>
                </div>
                <span slot="footer" class="dialog-footer">
                    <el-button @click="cancel" size="mini">取 消</el-button>
                </span>
            </el-dialog>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            tableData: [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1518 弄',
                    longitude: 116.3683244,
                    latitude: 39.915085
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1517 弄',
                    longitude: 116.405285,
                    latitude: 39.904989
                },
                {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1519 弄',
                    longitude: 117.190182,
                    latitude: 39.125596
                },
                {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1516 弄',
                    longitude: 112.549248,
                    latitude: 38.045474
                }
            ],
            dialogMap: false, //控制弹窗
            time: '', //定位点下的时间
            center: { lng: 0, lat: 0 }, //坐标
            zoom: 14, //缩放
            sign: false //弹窗开关
        };
    },
    mounted() {},
    methods: {
        positioning(row) {
            this.sign = true;
            this.dialogMap = true;
            //时间
            this.time = row.date;
            //经度和纬度
            this.center.lng = parseInt(row.longitude);
            this.center.lat = parseInt(row.latitude);
        },
        cancel() {
            this.dialogMap = false;
        }
    }
};
</script>

<style lang="scss" scoped></style>

效果

 

 希望对你有所帮助~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue2实现百度地图定位 的相关文章

  • 验证以防止角度形式出现重复的形式值

    我有几个表单数组 我需要进行验证 以便每个表单行中的特定字段在所有表单数组中必须是唯一的 如果任何值出现多次 则两个表单字段都必须标记为红色 我设法编写了一个函数 以便如果这些字段有任何更改 该函数将返回 true false 但我不确定如
  • 如何使用 Angular 1.5 中的组件为每个页面设置标题

    我最近开始使用 Angular 1 5 组件 我的应用程序中有多个页面 所以我决定创建一个
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • Mat select - 获取selectionChange的旧值

    我有一个项目 其中有一个包含以下内容的表单mat select选择器 每当用户更改输入时 我都会向用户显示一个对话框来确认此操作 现在 The selectionChange 通知值何时更改并将新值传递为 event 当用户取消对话框时 有
  • 考虑使用“jsdom”测试环境

    我有这个简单的测试 import React from react import render from testing library react import Button from describe Button gt it rend
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • 帮助在 UIWebView 中使用 Javascript 代码

    我想在 webView 中运行以下代码 以便内容可编辑 javascript document body contentEditable true document designMode on void 0 到目前为止 我已经尝试过这个 v
  • 如何在模态窗口中显示pdf? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个模式窗口 其中包含锚文本 当我单击此链接时 它必须调用其他位置的 pdf 并将其显示在弹出窗口中 我怎样才能做到这一点 请帮忙
  • Opera Mobile 9.7 Beta 设置焦点 [重复]

    这个问题在这里已经有答案了 我们使用手持式扫描仪将物品移入和移出库存 扫描仪运行一个 ASP 页 该页提交表单以移动项目 我们最近购买了一台运行 Windows Mobile 6 1 的新扫描仪 很快就意识到 Mobile IE 完全没用
  • 谷歌colab录音,如何实现更精确的方式告诉用户开始对着麦克风说话

    我正在尝试创建一个为机器学习项目录制音频的程序 我想使用 google colab 这样人们就不必在他们的系统上安装或运行任何东西 我在网上找到了这个录制和播放音频的示例 单元格 1 包含用于录制音频的 js 代码和用于将其转换为字节对象的
  • 防止 Firefox Web 通知自动关闭

    我已经在 Firefox 中将 Web 通知与服务器发送的 DOM 事件结合使用 不幸的是 通知在大约两到三秒后消失 我更喜欢 Chrome 的方法 即让消息保持可见 在任何给定时间最多显示三个 直到用户单击通知 这是我所拥有的 windo
  • 以编程方式将子节点添加到 jstree

    我正在尝试编写一些动态添加节点到 jstree 的代码 我已经关注了医生http www jstree com documentation crrm http www jstree com documentation crrm但无法获得一个
  • Cytoscape 布局 - 处理锁定节点

    我正在使用 vue cytoscape 渲染图形并浏览树状数据结构 我的目标是扩展父节点并保持它们在图中的位置 我想简单地添加新的子节点 我的方法是锁定当前节点 添加子节点并解锁节点 this cy nodes lock for let d
  • 使用添加“title”属性换行符 到 JSX 元素

    我知道我可以在 HTML 中添加换行符title属性使用 10 但 React 避免了这一点 例如 这是一个 React 组件 其中包含一个标准的 未由 React 处理的组件title包含换行符的属性 并且可以在浏览器中看到效果 但是如果
  • 如何使用 Firebase Cloud Functions 在 DataSnapshot 中查找特定值

    我正在尝试创建一个云函数 该函数将在 HTTP 请求 在计时器上发送 上触发 这将删除具有特定值的所有子项 数据库节点如下所示 activities 4GI1QXUJG0MeQ8Bq19WOdCQFo9r1 uid activity ham
  • 电子节点集成不起作用,也普遍奇怪的电子行为[重复]

    这个问题在这里已经有答案了 我是 Electron 的新手 我一直在努力让它工作 我遇到了无法解释的行为 所以这里有一个总结 我无法让 Electron 和 html 之间的通信正常工作 即使我有nodeIntegration true 网
  • 为什么间接更改复选框时不会触发复选框上的 onchange

    我使用 Prototype 来监视复选框 因此我可以向它们添加 javascript 检查 当单击复选框所在的 tr 或 td 时 应选中该复选框 当您直接单击复选框时 会触发 onchange 事件 因此您会收到警报 当 javascri
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激
  • 将变量从调用它的父页面传递给 Vue 组件

    我有一个简单的表格 显示了我的所有数据 主文件 php table class table table bordered table hover thead tr th Job Name th th Job Description th t

随机推荐