Vue,H5高德地图组件

本文介绍在Vue项目中如何实现H5页面动态异步加载高德地图,通过创建script标签来引入地图API,确保在需要时加载地图资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  H5加载高德地图时候异步创建script标签 


<script>
import MapLoader from '@/utils/AMap.js'
export default {
  props: {
    searchKey: {
      type: String,
      default: ""
    }
  },
  watch: {
    searchKey: {
      handler: function (val) {
        this.$nextTick(() => {
          this.searchByHand();
        });
      },
      deep: true
    },
    markers: function (val) {
      // this.$emit('sendCoordinate', this.markers[0].position)
    },
  },
  beforeMount() {
    let that = this
    MapLoader().then(AMap => {
      console.log('地图加载成功')
      that.map = new AMap.Map("amap-box", {
        resizeEnable: true,
        center: [121.329402, 31.228667],
        zoom: 11,
      });
    }, e => {
      console.log('地图加载失败', e)
    })
  },

  data() {
    let self = this;
    return {
      address: null,
      markers: [],
      searchOption: {
        city: "全国",
        citylimit: true
      },
      center: [121.329
### 高德地图 API 在 UniApp 和 Vue3 中的集成方法 在 UniApp 和 Vue3 的环境中使用高德地图 API 实现相关功能,可以通过以下方式完成: #### 1. 注册并获取高德地图 Key 开发者需要先注册成为高德开放平台用户,并创建应用以获得专属的 `Key` 值。此 `Key` 将用于后续的地图初始化配置[^1]。 #### 2. 安装依赖库 为了简化开发流程,可以安装官方推荐或者社区维护的相关插件来加速项目构建过程。例如,在 Vue.js 或者 Nuxt.js 环境下常用的包有 `vue-amap`,尽管它主要针对 Web 平台设计,但在某些情况下也可以适配到 H5 页面中运行于 UniApp 上的部分场景。 对于更灵活的需求,则可以直接引入原生 JavaScript SDK 文件并通过 script 标签加载至页面头部位置: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您的密钥"></script> ``` 注意替换上述链接中的版本号以及实际申请得到的应用程序接口授权字符串。 #### 3. 初始化地图组件 定义一个新的 Vue 组件用来承载地图显示区域及其交互逻辑。下面是一个简单的例子展示如何设置基本参数并将地图渲染出来: ```javascript <template> <view id="container" style="width:100%; height:calc(100vh - var(--window-top));"></view> </template> <script setup lang="ts"> import { onMounted } from 'vue'; onMounted(() => { const map = new AMap.Map('container', { zoom: 11, // 设置地图缩放级别 center: [116.397428, 39.90923], // 设置地图中心点坐标 }); }); </script> ``` 这里我们利用了 Vue Composition API (`setup`) 来管理生命周期钩子函数 `onMounted()` ,当 DOM 节点挂载完成后立即执行回调内部关于实例化地图对象的操作。 #### 4. 添加标记、路线规划等功能模块 一旦成功绘制出空白底图之后就可以进一步扩展其他服务特性比如放置图标标注兴趣地点、计算两点间距离方向等等。这些高级选项通常都需要额外调用特定类别的构造器配合相应的方法才能达成目标效果。 例如向指定地理位置添加自定义样式气泡窗口提示信息片段如下所示: ```javascript const markerContent = document.createElement('div'); markerContent.className = 'custom-marker'; markerContent.innerHTML = '<span>我的家</span>'; new AMap.Marker({ position: new AMap.LngLat(116.397428, 39.90923), content: markerContent, }).setMap(map); ``` 以上代码片段展示了怎样通过 HTML 元素节点作为载体传递给 Marker 构造器从而定制外观表现形式的同时还关联到了之前建立好的全局变量 scope 下面存储起来的地图实体 reference 变量名叫做 `map`. --- ### 注意事项 - **跨端兼容性测试**:由于 UniApp 是一个多端框架,因此即使是在 H5 场景下调用了浏览器环境下的 Map 对象也不代表能够在小程序或者其他非 web runtime target device 正常工作。所以务必做好充分验证确保预期行为一致。 - **性能优化考量**:如果项目规模较大建议按需懒加载必要的脚本资源减少初次访问时的整体体积负担提升用户体验满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瘦瘦瘦大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值