实现效果 - 搜索和拖拽选址

思路

拖拽选址,用的是高德的UI组件库PositionPicker
添加圆标记用的是添加覆盖物-圆
搜索选址用的是搜索服务AMap.Autocomplete(根据输入关键字提示匹配信息)

重点
实现拖拽后会返回经纬度,主要是改变圆的位置,.circle.setCenter([location.lng,location.lat]),拖拽的时候,圆跟着位置点中心在动;
当搜索选址的时候,也会返回一个经纬度等位置信息,这时改变圆,地图不会动,地图的点标记也不会动,这时候,用一个方法搞定map.setFitView()

代码

<template><div class="addFence"><my-head title="新增围栏" iconL="back" :hslotr='hslotr' @on-click-hleft="triggerHLeft" @on-click-hright='triggerHRight'></my-head><div id="search"><div class="search_box"><div class="search_btn"><img src="/images/person/search.png" alt=""></div><input id="search_adress" maxlength="30" type="text" v-model="searchText" placeholder="请输入搜索地址"><div class="close" @click="clearSearch"><img src="/images/person/clear.png" alt=""></div></div></div><div id="map-container"></div><div class="fence_msg"><mt-field label="中心位置" type='textarea' multiline='true' v-model="centerLocation"></mt-field><mt-field label="围栏名称" placeholder="请输入围栏名称" v-model="fenceName"></mt-field><mt-field label="围栏半径" v-model="radius"><!-- <mt-range class="rangeBox" v-model="rangeValue" :disabled="true" :barHeight="1"><div slot="start"></div><div slot="end"></div></mt-range>     --></mt-field><mt-field label="围栏报警" readonly placeholder="进围栏报警" v-model="fenceStyle"  @click.native="choiceFenceStyle"><img src="/images/arrowrightbb.png"></mt-field><mt-actionsheet:actions= "data"v-model="sheetVisible"></mt-actionsheet></div></div>
</template>
<script>
export default {data(){return{hslotr: '保存',rangeValue: '',centerLocation: '中心位置',fenceName: '围栏1',fenceStyle: '进围栏报警',data:[],sheetVisible: false,radius: 500,circle: null,map: {},searchText: ''}},mounted(){this.initMap();},methods:{triggerHLeft(){this.$router.go(-1);},triggerHRight(){console.log('点击了保存')},clearSearch(){this.searchText = '';},/* 做围栏圈圈 */addCircle(lat,lng,radius){lat = lat + "";lng = lng + "";this.circle = new AMap.Circle({center: new AMap.LngLat(lat,lng), // 圆心位置radius: radius,  //半径strokeColor: "#76D5C2",  //线颜色strokeOpacity: 1,  //线透明度strokeWeight: 1,  //线粗细度fillColor: "#76D5C2",  //填充颜色fillOpacity: 0.35 //填充透明度});this.map.add(this.circle);this.map.setFitView();},initMap(){const _this = this;_this.map = new AMap.Map('map-container', {zoom: 16,scrollWheel: false})/* 做地图拖拽选址 */AMapUI.loadUI(['misc/PositionPicker'], function(PositionPicker) {console.log('aaajdjdjdjdjdj')var positionPicker = new PositionPicker({mode: 'dragMap',map: _this.map});positionPicker.on('success', function(positionResult) {let position = positionResult.position;if(_this.circle){console.log(position.lng,position.lat)_this.circle.setCenter([position.lng,position.lat]);}else{_this.addCircle(position.lng, position.lat,_this.radius);}_this.centerLocation = positionResult.address;});positionPicker.on('fail', function(positionResult) {console.log('fail');});var onModeChange = function(e) {positionPicker.setMode(e.target.value)}positionPicker.start();});/* 搜索地址 */_this.map.plugin(["AMap.Autocomplete"], function() {var auto = new AMap.Autocomplete({input: "search_adress"});AMap.event.addListener(auto, "select", function(result){console.log(result);let location = result.poi.location;if(_this.circle){_this.circle.setCenter([location.lng,location.lat]);}else{_this.addCircle(location.lng, location.lat,_this.radius);}_this.map.setFitView();});});},choiceFenceStyle(){const _this = this;this.data = [{name: '进围栏报警', method: function () {_this.fenceStyle = '进围栏报警';_this.sheetVisible = false;}},{name: '出围栏报警', method: function () {console.log('出围栏报警')_this.fenceStyle = '出围栏报警';_this.sheetVisible = false;}},{name: '进/出围栏报警', method: function () {_this.fenceStyle = '进/出围栏报警';_this.sheetVisible = false;}},{name: '暂不报警', method: function () {_this.fenceStyle = '暂不报警';_this.sheetVisible = false;}}]this.sheetVisible = true;}}
}
</script>

高德地图 - 拖拽选址+搜索选址相关推荐

  1. 高德地图四:关键字搜索

    高德地图四:关键字搜索 关键字检索介绍 根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的"肯德基". 注意:关键字未设置城市信息(默认为全国搜索)时,如果 ...

  2. @antv/l7绘制地图,添加图例,修改地图上颜色,是否允许地图拖拽,是否滚动缩放等

    html <div class="charts-box"><div style="min-height: 300px; justify-content: ...

  3. react Amap引入高德地图,并实现搜索定位。

    react 引入高德地图,并实现搜索定位 一.react 引入Amap: Amap官方地址:https://elemefe.github.io/react-amap/articles/start 按照 ...

  4. android地图拖动事件,地图拖拽相关事件

    事件系统 html, body, #container { width: 100%; height: 100%; } 请用鼠标拖拽地图试试 地图拖拽相关事件 绑定事件 解绑事件 //初始化地图对象,加 ...

  5. Android开发丶基于高德地图实现定位、搜索定位、绘制圆圈自定义图标及改变圆圈半径等功能

    前一段时间接了个需求,进入一个地图界面,可以获取当前位置信息,通过输入位置信息获取位置,绘制圆圈并可以实时改变圆圈半径等功能,地图SDK我们使用的是高德地图,仔细阅读了开发文档,发现这些需求都可以通过 ...

  6. Flutter 调用高德地图APP实现位置搜索、路线规划、逆地理编码

    1 开发准备 pubspec.yaml 配置文件中添加插件 dependencies:flutter:sdk: flutterurl_launcher: ^6.1.2 iOS 配置 info.plis ...

  7. 高德地图——定位,POI搜索

    1.创建应用获取KEY 创建应用 填写应用相关的信息 获取SHA1值 获取KEY值 2.Android studio 项目配置,集成SDK 配置Gradle,通过build.gradle进行sdk的配 ...

  8. 高德地图api之兴趣点搜索

    除了定位basic map,我们现在探讨一下使用api中提供的搜索兴趣点服务和路线查找服务: 高德地图的api提供了对千万级别的兴趣点的搜索,PoiSearch有几种方式:常用的有关键字搜索,类型搜索 ...

  9. 高德地图实现画线搜索

    今天分享一下,使用高德地图api实现上图可自由画线的效果. 查看高德官方文档会发现,并没有可自主画图,文档提供的矢量图功能有: AMap.Polyline 构造折线 AMap.BezierCurve ...

最新文章

  1. Windows 10 Anaconda Python 3.7 安装 MXNet GPU版
  2. 2021年工业机器人的六大趋势
  3. 图解反向代理和正向代理。
  4. 返回局部变量或临时变量的地址_C++的函数不可以返回局部变量的指针
  5. 机器学习(一)——线性回归、分类与逻辑回归
  6. php 五角星,php使用GD库画五角星_PHP教程
  7. [毕业生的商业软件开发之路]系列文章目录规划
  8. 线性表的链式存储实现
  9. 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)
  10. 2018年统计用区划代码和城乡划分代码
  11. web网页设计期末课程大作业 简单的学生网页作业源码 基于HTML仿淘宝电商网站项目的设计与实现 企业网站制作
  12. 【python 走进NLP】hanNLP 简繁拼音转换
  13. 率土之滨服务器维修,率土之滨征服赛季合服与转服功能详解
  14. erlang使用httpc:request报错nxdomain
  15. 还没量产的FF上市!贾跃亭:必须回国!这次,谁为他梦想“窒息”
  16. 游戏时间 (10 分)
  17. 截至2015年工作中接触集成过的硬件设备整理记录
  18. 《GhostXP_SP2电脑公司特别版_8.0》
  19. 更换ip软件安卓_掘金网告诉你稳定IP的神操作!
  20. [arduino]ESP8266配置连接IoT阿里云平台(arduino D1 mini)

热门文章

  1. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1...
  2. 2021-10-14每日一练
  3. 育儿-《10-14岁青少年,你在想什么?》书中的精髓:父母如何理解青少年潜意识中的冲突和需求,陪伴他们共度青春期?
  4. 前端媒体查询知识梳理
  5. 光伏行业将由补贴转向技术、商业驱动
  6. 新锐潮流男装品牌CHINISM成功上线巨益全渠道电商中台
  7. 使用Python获取股票数据(csv文件)
  8. @Validated嵌套校验
  9. easyExcel导出多个sheet的excel
  10. windows安装tomcat