当前位置: 首页 > article >正文

腾讯地图+vue实现后台设置某外卖店铺的位置坐标

1、开发需求

在vue后台管理系统实现定位选点(位置),即后台设置某个外卖店铺的位置坐标。

2、效果展示

在这里插入图片描述


3、技术选择

使用腾讯地图的JavaScript API GL在vue框架中实现,一个vue页面即可搞定。

官方文档地址:https://lbs.qq.com/webApi/javascriptGL/glGuide/glOverview

4、代码

<template>
  <div id="container"></div>
</template>

<script>
export default {
  data() {
    return {}
  },
  mounted() {
    this.loadTMapScript().then(() => {
      // 脚本加载完成后可以安全使用 TMap
      this.initMap()
    }).catch(err => {
      console.error('加载 TMap 脚本失败:', err)
    })
  },
  methods: {
    loadTMapScript() {
      return new Promise((resolve, reject) => {
        if (window.TMap) {
          // 如果 TMap 已经加载,直接 resolve
          resolve()
        } else {
          const script = document.createElement('script')
          script.src = 'https://map.qq.com/api/gljs?v=1.exp&key=xxx-xxx-xxxx' // key请替换为你的腾讯地图key
          script.onload = () => {
            const TMapCheck = window.TMap // 确认 TMap 是否已存在
            if (TMapCheck) {
              resolve() // 脚本加载成功
            } else {
              reject(new Error('TMap 未定义'))
            }
          }
          script.onerror = () => {
            reject(new Error('脚本加载失败'))
          }
          document.head.appendChild(script)
        }
      })
    },
    initMap() {
      // 检查 TMap 是否已加载
      if (window.TMap) {
        this.map = new window.TMap.Map('container', {
          center: new window.TMap.LatLng(39.916527, 116.397128), // 设置中心坐标
          zoom: 18,
        })
        const { map } = this
        // 初始化marker
        const marker = new window.TMap.MultiMarker({
          id: 'marker-layer', // 图层id
          map,
          styles: { // 点标注的相关样式
            marker: new window.TMap.MarkerStyle({
              width: 25,
              height: 35,
              anchor: { x: 16, y: 32 }
            })
          },
          geometries: [{ // 点标注数据数组
            id: 'demo',
            styleId: 'marker',
            position: new window.TMap.LatLng(39.916527, 116.397128),
            properties: {
              title: 'marker'
            }
          }]
        })
        // 监听点击地图,切换位置
        map.on('click', event => {
          const position = event.latLng // 获取点击位置的经纬度
          console.log(`地图点击位置: (${position.lat}, ${position.lng})`)
          // 更新地图
          marker.setGeometries([{ // 点标注数据数组
            id: 'demo',
            styleId: 'marker',
            position: new window.TMap.LatLng(position.lat, position.lng),
            properties: {
              title: 'marker'
            }
          }])
        })
      } else {
        console.error('TMap 未定义,无法初始化地图')
      }
    },
  }
}
</script>

<style scoped>
#container{
  width:50%;
  height:800px;
  position: relative;
  top: 0px; /* 设置上边距为 50% */
  left: 50%; /* 设置左边距为 50% */
  transform: translate(-50%, 0);
}
</style>


如果对你有帮助,多谢一键三连!!!


http://www.kler.cn/a/443520.html

相关文章:

  • SweetAlert2 - 漂亮可定制的 JavaScript 弹窗
  • Javascript数据结构——图Graph
  • python制作打字小游戏
  • SpringMVC(一)配置
  • Elasticsearch:基础概念
  • vim里搜索关键字
  • SAP抓取外部https报错SSL handshake处理方法
  • java不用启动项目测试方法
  • Node.js的Web服务在Nacos中的实践
  • Oracle筑基篇-体系结构概览
  • 【开源库 | minizip】Linux(Ubuntu18.04)下,minizip的编译、交叉编译
  • 使用CSS把背景图片铺满屏幕
  • Windows Server 2019 配置PHP环境(图文教程)
  • RFdiffusion get_torsions函数解读
  • NGINX的安装和配置(Linux环境)
  • 文心快码代码助手智能体:智能体时代委托自主完成任务
  • 使用ollama编写大模型客户端
  • mfc140u.dll是什么文件?如何解决mfc140u.dll丢失的相关问题
  • 如何使用 Python 处理数据库事务?
  • spring boot密码加密方式
  • opencascade配置笔记
  • QNX通过pfctl工具查看socket通信状态
  • Serverless集成和扩展性概述
  • POD 存储、PV、PVC
  • 基于wifi的火焰报警系统设计(论文+源码)
  • vue框架的搭建