vue 调用高德地图API

发布时间:2018-08-06 16:56,

浏览次数:2799

, 标签:

vue

API

(说明:之前第三条忘记说明了,现在补上第三条,道歉!)

一、功能:定位;精准定位;拖拽选点;编辑遮罩物;工具条

二、实现过程:

1、申请Key,我申请的是Web端(JS API),不同的API效果可能不一样

2、在index.html中引入:

3、在webpack.base.conf.js加入

externals: {     'AMap': 'AMap',     'AMapUI': 'AMapUI' }

4、创建一个文件:map.vue

加载

@click="addCircle">画圆

定位

取消圆

@click="getMaker">获取覆盖物信息

{{chosePosition}} 圆的长度{{myCircle.radius}}

default { name: 'map', data () { return { map: null, /* 当前位置 */ thisPosition: {

location: '', lng: '', lat: '' }, /* 选取的位置 */ chosePosition: { location: '',

lng: '', lat: '' }, /* 范围圆的数据 */ myCircle: {}, /* 签到圆对象 */ circle: {}, /* 编辑器对象

*/ circleEditor: null, /* 拖拽对象 */ positionPickerObj: {}, /* 当前城市编码 */ citycode:

'020' } }, methods: { /* 添加工具条 */ addTool () { AMap.plugin(['AMap.ToolBar',

'AMap.Driving'], () => { let toolbar = new AMap.ToolBar()

this.map.addControl(toolbar) }) }, /* 定位具体位置 */ thisLocation () {

this.map.plugin('AMap.Geolocation', () => { let geolocation = new

AMap.Geolocation({ // 是否使用高精度定位,默认:true enableHighAccuracy: true, //

设置定位超时时间,默认:无穷大 timeout: 10000, // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20) buttonOffset:

new AMap.Pixel(10, 20), // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false

zoomToAccuracy: false, // 定位按钮的排放位置, RB表示右下 buttonPosition: 'RB' })

this.map.addControl(geolocation) geolocation.getCurrentPosition()

AMap.event.addListener(geolocation, 'complete', (data) => { console.log(data)

this.citycode = data.addressComponent.cityCode this.thisPosition =

data.position this.thisPosition.message = data.formattedAddress

this.chosePosition = this.thisPosition /* 画圆 */ this.cancelLocation()

this.addCircle() /* 拖拽选址 */ this.positionPicker() })

AMap.event.addListener(geolocation, 'error', function (data) { alert('定位失败') })

}) }, /* 画图 */ addCircle () { this.myCircle = { center:

[this.chosePosition.lng, this.chosePosition.lat], // 圆心位置 radius: 300, // 半径

strokeColor: '#FFFF00', // 线颜色 strokeOpacity: 0.2, // 线透明度 strokeWeight: 1, //

线粗细度 fillColor: '#222222', // 填充颜色 fillOpacity: 0.2// 填充透明度 } this.circle = new

AMap.Circle(this.myCircle) this.circle.setMap(this.map) // 引入多边形编辑器插件

this.map.plugin(['AMap.CircleEditor'], () => { // 实例化多边形编辑器,传入地图实例和要进行编辑的多边形实例

this.circleEditor = new AMap.CircleEditor(this.map, this.circle) // 开启编辑模式

this.circleEditor.open() this.myCircle.radius = this.circle.Mg.radius

this.circleEditor.on('adjust', (data) => { this.myCircle.radius = data.radius

}) this.circleEditor.on('move', (data) => { console.log('移动')

this.chosePosition.lng = data.lnglat.lng this.chosePosition.lat =

data.lnglat.lat }) }) }, /* 取消圆 */ cancelLocation () {

this.map.remove(this.circle) if (this.circleEditor) { this.circleEditor.close()

} }, /* 搜索 */ search () { let vm = this AMap.plugin(['AMap.PlaceSearch',

'AMap.Autocomplete'], () => { var autoOptions = { city: this.citycode, input:

'input_id' } // eslint-disable-next-line no-unused-vars let autoComplete = new

AMap.Autocomplete(autoOptions) // eslint-disable-next-line no-unused-vars let

placeSearch = new AMap.PlaceSearch({ city: this.citycode, map: vm.map })

AMap.event.addListener(autoComplete, 'select', e => { // TODO 针对选中的poi实现自己的功能

placeSearch.setCity(e.poi.adcode) // placeSearch.search(e.poi.name)

this.chosePosition = e.poi.location if (this.chosePosition) { /* 画圆 */

this.cancelLocation() this.addCircle() /* 拖拽选址 */ this.positionPickerObj.stop()

this.positionPicker() this.createWindow() } }) }) }, /* 获取覆盖物信息 */ getMaker ()

{ var overlaysList = this.map.getAllOverlays('circle')

console.log(overlaysList) // 可选参数有:‘marker’、‘circle’、‘polyline’、‘polygon }, /*

拖拽选址 */ positionPicker () { AMapUI.loadUI(['misc/PositionPicker'],

(PositionPicker) => { this.positionPickerObj = new PositionPicker({ mode:

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

// 依赖地图对象 }) this.positionPickerObj.on('success', (positionResult) => {

this.chosePosition = positionResult.position /* 画圆 */ this.cancelLocation()

this.addCircle() }) this.positionPickerObj.start([this.chosePosition.lng,

this.chosePosition.lat]) }) }, /* 创建信息窗体 */ createWindow () { // 信息窗体的内容 var

content = [ '

范围: 200米

',

'

位置不准确?试试拖拽鼠标或者输入地点

' ] // 创建 infoWindow 实例 var

infoWindow = new AMap.InfoWindow({ content: content.join('
'), // 传入 dom

对象,或者 html 字符串 offset: new AMap.Pixel(0, -50) }) // 打开信息窗体

infoWindow.open(this.map, this.chosePosition) } }, activated () { }, mounted ()

{ this.map = new AMap.Map('container-map', { resizeEnable: true, zoom: 15,

viewMode: '2D', zooms: [4, 18] }) /* 添加工具条 */ this.addTool() /* 获取当前位置 */

this.thisLocation() /* 添加搜索功能 */ this.search() } }

4、效果图

无法上传,csdn发疯了

vue 高德地图搜索功能_vue 调用高德地图API相关推荐

  1. vue 高德地图搜索功能_VUE中使用高德地图做轨迹添加功能,帮助轨迹展示

    准备工作 使用前准备 : 高德地图key 使用插件: vue-amap 1.npm安装vue-amap npm install vue-amap --save import AMap from 'vu ...

  2. SAP系统和微信集成的系列教程之八:100行代码在微信公众号里集成地图搜索功能

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

  3. vue实现自定义搜索功能

    vue实现自定义搜索功能需要使用computed函数,具体代码实现如下: <template><div v-theme:column="'narrow'" id= ...

  4. 高德地图引入Vue添加POI搜索功能、marker点标记、通过经纬度逆编码过程

    安装高德地图 npm i @amap/amap-jsapi-loader --save 引入 import AMapLoader from '@amap/amap-jsapi-loader'; *在组 ...

  5. 高德地图搜索功能以及清除搜索结果maker

    第一次写文章,写得不好各位看官见谅~ (pσ_σ)P 首先这是一个vue里面的项目,高德地图api是直接CDN进来的,所以使用了global来调用,默认已经初始化了一个地图,为了实现一个输入框搜索功能 ...

  6. 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)

    Screenshot_20170509-152819.png 前言 最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sd ...

  7. vue实现简单搜索功能

    目录 1.概述 2.功能逻辑 2.1功能流程 2.2 流程图 3.功能实现 3.1 vue组件化 3.2 代码 3.3 动态效果 1.概述 在vue项目中,搜索功能是我们经常需要使用的一个场景,最常用 ...

  8. vue实现前端搜索功能

    当数据量不是很大时,可以在前端进行搜索.这里实现基本的搜索功能,可以根据实际情形,再增添功能,将其变复杂. 将下面的代码贴过去,就可以直接体验简单的搜索功能.没有写样式,仅供大家了解实现的逻辑. 界面 ...

  9. EXCEL地图可视化功能概览--小O地图EXCEL版0.6.3.0版

    前言 小O地图EXCEL版软件能干什么? 总结起来,在EXCEL中实现 地图浏览.地图任务(处理地理数据).地图可视化.地图标注.地图快照. 本文是对小O地图EXCEL版软件功能的简介,通过本文,能够 ...

  10. android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)

    本篇文章给大家带来的内容是关于h5页面如何调用百度地图获取当前位置(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在项目中越来越多的用到了手机的GRS定位功能,使用百度地图A ...

最新文章

  1. 平安保险基于 SPI 机制的 RocketMQ 定制化应用
  2. oracle数据库表空间文件收缩实例
  3. hive的新分区和旧分区的概念问题
  4. w7系统计算机e盘无法打开,Win7电脑磁盘打不开怎么办
  5. javascript 里Array的一些方法
  6. 表格里面怎么打多个√_Excel怎样在表格里打√?
  7. 【线性查询之间存在相关性误差】差分隐私系统学习记录(七)
  8. 黑马程序员-JAVA基础-IO流之字符流和字符流缓冲区
  9. [摘抄]游戏主循环逻辑
  10. 2016数据库考试题
  11. 316.去除重复字母
  12. 新媒体运营神器-迅捷旗下的这些媒体软件简直要逆天了!
  13. java视频上传,播放预览,解决苹果手机视频无法预览的问题
  14. java学生管理系统项目实训报告
  15. 微信小程序 - WXML语法与HTML比较
  16. 又发现几个宝藏网站系列(二)
  17. Oracle 定时任务执行存储过程
  18. iometer测试方法linux,IOmeter测试指导手册.pdf
  19. ViewPager轮播图自动无限循环滑动,手指按住停止滑动
  20. 在ubuntu下用sublime text3编译C++和pascal

热门文章

  1. geexbox 编译
  2. 【Webcam设计】x264对OpenCV Mat的编解码
  3. 递归求解汉诺塔问题(C++)
  4. CrateDB 3.2.4 发布,大规模可伸缩的数据存储系统
  5. 用Redis实现分布式锁 与 实现任务队列【转载】
  6. 1月16日学习内容整理:存储库MongoDB之pymongo模块
  7. xshell连接Linxu系统乱码
  8. dwz中的table
  9. 【CAS单点登录视频教程】 第03集 -- 配置 tomcat的 ssl
  10. 电脑死机大全,看完你就是高手了