vue使用高德地图画电子围栏_在Vue中完美的使用高德地图

本文介绍如何在Vue应用中使用高德地图API进行电子围栏的绘制。通过created生命周期钩子判断并加载高德地图API,然后初始化地图,并加载PositionPicker模块以实现地图拖拽功能。当地图拖拽完成后,会触发自定义的'drag'事件,传递当前位置信息。
摘要由CSDN通过智能技术生成

created 生命周期载入高德地图API

载入的方式类似于 jquery 的脚本加载,我这里也是使用了别人封装好的一个加载方法,各位直接使用或者自己改

created () {

// 已载入高德地图API,则直接初始化地图

if (window.AMap && window.AMapUI) {

this.initMap()

// 未载入高德地图API,则先载入API再初始化

} else {

// 载入高德地图和UI组件

Promise.all([

remoteLoad(`http://webapi.amap.com/maps?v=1.3&key=${MapKey}`),

remoteLoad('http://webapi.amap.com/ui/1.0/main.js')

]).then(() => {

this.initMap()

})

}

}

初始化地图

在 methods 中创建一个 initMap 的方法供载入地图API之后调用。这里就可以使用任意高德API

initMap () {

// 加载PositionPicker,loadUI的路径参数为模块名中 'ui/' 之后的部分

let AMapUI = this.AMapUI = window.AMapUI

let AMap = this.AMap = window.AMap

AMapUI.loadUI(['misc/PositionPicker'], PositionPicker => {

let mapConfig = {

zoom: 16,

cityName: MapCityName

}

if (this.lat && this.lng) {

mapConfig.center = [this.lng, this.lat]

}

let map = new AMap.Map('js-container', mapConfig)

// 加载地图搜索插件

AMap.service('AMap.PlaceSearch', () => {

this.placeSearch = new AMap.PlaceSearch({

pageSize: 5,

pageIndex: 1,

citylimit: true,

city: MapCityName,

map: map,

panel: 'js-result'

})

})

// 启用工具条

AMap.plugin(['AMap.ToolBar'], function () {

map.addControl(new AMap.ToolBar({

position: 'RB'

}))

})

// 创建地图拖拽

let positionPicker = new PositionPicker({

mode: 'dragMap', // 设定为拖拽地图模式,可选'dragMap'、'dragMarker',默认为'dragMap'

map: map // 依赖地图对象

})

// 拖拽完成发送自定义 drag 事件

positionPicker.on('success', positionResult => {

// 过滤掉初始化地图后的第一次默认拖放

if (!this.dragStatus) {

this.dragStatus = true

} else {

this.$emit('drag', positionResult)

}

})

// 启动拖放

positionPicker.start()

})

}

调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值