vue异步引入百度地图API

官网采用原生写法引入百度地图,不适用于Vue。异步引入百度地图可方便管理baiduAK。代码采用定时器循环resolve(BMap),解决因异步无法正常返回BMap的问题,并介绍了引入和使用方式。

看了下官网上的方法,是采用原生的写法,不适用于vue

异步引入的好处是baiduAK可以方便管理

import { baiduAk } from '@/settings'

export function map() {
  /* eslint-disable */
  return new Promise(function(resolve, reject) {
    if (typeof (BMap) !== 'undefined') return resolve(BMap)
    var script = document.createElement('script')
    script.type = 'text/javascript'
    script.src = `http://api.map.baidu.com/api?v=2.0&ak=${baiduAk}&callback=init`
    script.onerror = reject
    document.head.appendChild(script)
    const timer = setInterval(() => {
      if (BMap) {
        resolve(BMap)
        clearInterval(timer)
      }
    }, 500)
  })
}

此代码特殊在于使用了定时器循环resolve(BMap),因异步原因,有时无法正常返回BMap,故采用此写法

引入方式

import { map } from '@/utils/map'

使用方式

            this.$nextTick(() => {
              map().then(BMap => {
                this.map = new BMap.Map('allmap', { enableMapClick: false })
                const point = new BMap.Point(longitude, latitude)
                this.map.centerAndZoom(point, 17)
                this.map.enableScrollWheelZoom() // 启用滚轮放大缩小,默认禁用
                this.map.enableContinuousZoom() // 启用地图惯性拖拽,默认禁用
              })
            })

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值