位置: IT常识 - 正文

vue 高德地图 —— 点标记、信息弹窗、网页导航、获取经纬度及当前城市信息(vue 使用高德地图)

编辑:rootadmin
vue 高德地图 —— 点标记、信息弹窗、网页导航、获取经纬度及当前城市信息

推荐整理分享vue 高德地图 —— 点标记、信息弹窗、网页导航、获取经纬度及当前城市信息(vue 使用高德地图),希望有所帮助,仅作参考,欢迎阅读内容。

vue 高德地图 —— 点标记、信息弹窗、网页导航、获取经纬度及当前城市信息(vue 使用高德地图)

文章相关热门搜索词:vue调用高德地图实现导航,vue高德地图车辆轨迹,vue高德地图多个地点标注,vue调用高德地图实现导航,vue leaflet 高德地图,vue leaflet 高德地图,vue调用高德地图实现导航,vue调用高德地图实现导航,内容如对您有帮助,希望把文章链接给更多的朋友!

新建 components/amap.vue 文件,封装高德地图组件:

<template> <div> <div id="amapcontainer" style="width: 800px; height: 520px"></div> </div></template><script>import AMapLoader from '@amap/amap-jsapi-loader';window._AMapSecurityConfig = { securityJsCode: '' // '「申请的安全密钥」',}export default { name: "purchannel", data () { return { zoom: 12, originX: '',// 当前浏览器定位的位置 originY: '', map: null, //地图实例 infoWindow: '', makerList: [], provinceArr: [], cityArr: [], provinceCode: '', cityCode: '', storeList: [], //门店列表 } }, watch: { }, created () { }, mounted () { // DOM初始化完成进行地图初始化 this.initAMap() }, methods: { initAMap () { AMapLoader.load({ key: "", // 申请好的Web端开发者Key,首次调用 load 时必填 version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 plugins: ["AMap.Scale", "AMap.ToolBar", "AMap.ControlBar", 'AMap.Geocoder', 'AMap.Marker', 'AMap.CitySearch', 'AMap.Geolocation', 'AMap.AutoComplete', 'AMap.InfoWindow'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等 }).then((AMap) => { // 获取到作为地图容器的DOM元素,创建地图实例 this.map = new AMap.Map("amapcontainer", { //设置地图容器id resizeEnable: true, zoom: this.zoom, // 地图显示的缩放级别 viewMode: "3D", // 使用3D视图 zoomEnable: true, // 地图是否可缩放,默认值为true dragEnable: true, // 地图是否可通过鼠标拖拽平移,默认为true doubleClickZoom: true, // 地图是否可通过双击鼠标放大地图,默认为true // center: [113.370824, 23.131265], // 中心点坐标 广州 // mapStyle: "amap://styles/darkblue", // 设置颜色底层 }); this.getLocation() this.setupMapTool() this.searchCityInfo() // 地图点击事件,点击获取经纬度; this.map.on("click", (e) => { // 获取经纬度 // console.log('map click', e, e.lnglat.getLng(), e.lnglat.getLat()); this.infoWindow.close() }) }).catch(e => { console.log(e); }) }, setupMapTool () { // 添加工具条控件,工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件 let controlBar = new AMap.ControlBar({ position: { top: '10px', left: '10px', }, }); let toolBar = new AMap.ToolBar({ position: { top: '110px', left: '35px' } }); this.map.addControl(controlBar); // 方向盘 this.map.addControl(toolBar); // 添加右下角的放大缩小 this.map.setDefaultCursor("pointer"); // 使用CSS默认样式定义地图上的鼠标样式 }, searchCityInfo () { // 获取当前城市,省份,经纬度范围 const citySearch = new AMap.CitySearch() citySearch.getLocalCity((status, result) => { // console.log('citySearch', status, result); if (status === 'complete' && result.info === 'OK') { // 查询成功,result即为当前所在城市信息 this.getDivision(0, 1, result.province, result.city) } else { console.log('CitySearch出错') } }) }, // 从高德地图api获取浏览器定位 getLocation () { let geolocation = new AMap.Geolocation({ // 是否使用高精度定位,默认:true enableHighAccuracy: true, // 设置定位超时时间,默认:无穷大 timeout: 10000, // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false zoomToAccuracy: true, panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true showButton: true, //显示定位按钮,默认:true buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角 buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) }) geolocation.getCurrentPosition((status, result) => { // console.log('getCurrentPosition', status, result) if (status == 'complete') { // result是具体的定位信息 this.originX = result.position.lat this.originY = result.position.lng } else { console.log('定位出错', result); } }) }, // 增加点标记 setMapMarker () { // 创建 AMap.Icon 实例 let icon = new AMap.Icon({ size: new AMap.Size(36, 36), // 图标尺寸 image: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png", // Icon的图像 imageSize: new AMap.Size(24, 30), // 根据所设置的大小拉伸或压缩图片 imageOffset: new AMap.Pixel(0, 0) // 图像相对展示区域的偏移量,适于雪碧图等 }); //信息窗口实例 this.infoWindow = new AMap.InfoWindow({ anchor: "top-left", offset: new AMap.Pixel(0, -30) }); let makerList = [] this.storeList.forEach((item) => { // 遍历生成多个标记点 let marker = new AMap.Marker({ map: this.map, zIndex: 9999999, icon: icon, // 添加 Icon 实例 offset: new AMap.Pixel(-13, -30), //icon中心点的偏移量 position: [item.locationX, item.locationY] // 经纬度对象new AMap.LngLat(x, y),也可以是经纬度构成的一维数组[116.39, 39.9] }); let content = '<ul style=" margin:-10px 0 5px 0; padding:0.2em 0;">' + '<li style="line-height:26px; font-size:14px;color:#727272;margin-bottom:6px">' + item.name + '</li>' + '<li style="font-size:14px;color:#727272;">' + '<span style="width:50px; display:inline-block;" >地 址:</span>' + item.address + '</li>' + '<li style="font-size:14px;color:#727272;">' + '<span style="width:50px; display:inline-block;">电 话:</span>' + item.phone + '</li>' + '</ul>' marker.content = content marker.on("click", this.markerClick) // marker.emit('click', { target: marker });// 此处是设置默认出现信息窗体 makerList.push(marker) }); this.makerList = makerList this.map.add(makerList) // 自动适应显示想显示的范围区域 this.map.setFitView(); }, // 控制标记的信息窗体的显示 markerClick (e) { // 标注的点击事件 this.infoWindow.setContent(e.target.content); this.infoWindow.open(this.map, e.target.getPosition()); }, // 开始定位 beginLocate (x, y, index) { // console.log('x,y,this.makerList[index].content', this.makerList[index], x, y) this.map.panTo([x, y]) //设置地图中心点 if (this.makerList[index]) { this.infoWindow.setContent(this.makerList[index].content) } this.infoWindow.open(this.map, [x, y]) }, // 地图导航 beginNav (address, y, x) { let trimAdd = address.replace(/\s+/g, ""); let src = `https://uri.amap.com/navigation?from=${this.originY},${this.originX},当前位置&to=${y},${x},${trimAdd}&policy=1&coordinate=gaode&callnative=0` window.open(src) }, /** * @param code 编码 * @param layer 层级 默认1级(省份) * @param province 默认地址 省份 * @param city 默认地址 城市 * 查询行政区域 */ getDivision (code = 0, layer = 1, province, city) { let data = { parentCode: code }; this.$http({ method: 'GET', url: this.baseURI + "dictionary/queryDivision.json", params: data }).then(res => { //接口返回数据 if (res.data.mobBaseRes.code == 100) { if (layer == 1) { this.provinceArr = res.data.mobBaseRes.result; if (province) { this.provinceArr.forEach((value, index, arr) => { if (arr[index].name == province) { this.provinceCode = arr[index].code; this.getDivision(this.provinceCode, 2, province, city) } }) } } else { this.cityArr = res.data.mobBaseRes.result; if (city) { this.cityArr.forEach((value, index, arr) => { if (arr[index].name == city) { this.cityCode = arr[index].code; this.querychannel(this.cityCode) } }) } } } }).catch(err => { }) }, /** * @param id 渠道id * 查询指定行政区域的 marker 定位信息 */ querychannel (id) { let data = { 'divisionCode': id }; this.$http({ method: 'GET', url: this.baseURI + "services/channel/info/list.json", params: data }).then(res => { //接口返回数据 if (res.data.mobBaseRes.code == 100) { this.storeList = res.data.mobBaseRes.datas || [] this.removeMarker() if (this.storeList.length) { this.setMapMarker() } } }).catch(err => { }) }, // 清除点 removeMarker () { if (this.makerList) { // 移除已创建的 marker this.map.clearMap() // 清除所有覆盖物(点标志) this.makerList = [] } } }}</script><style lang="less" scoped></style>

接下来,在需要使用的组件中引入 amap.vue:

<template> <div> <map-container></map-container> </div></template><script>import MapContainer from "@/components/amap";export default { name: "purchannel", components: { MapContainer }, data () { return { } }, watch: {}, created () { }, mounted () { }, methods: { }}</script><style lang="less" scoped></style>
本文链接地址:https://www.jiuchutong.com/zhishi/289700.html 转载请保留说明!

上一篇:从上魏斯巴赫山地列车的车站向外看,德国图林根 (© golero/iStock/Getty Images Plus)

下一篇:没关系,前端还死不了(前端没思路怎么办)

  • 小米关于手机在哪里找(小米手机关于手机在哪)

    小米关于手机在哪里找(小米手机关于手机在哪)

  • 快手参加的抽奖在哪看(快手参加的抽奖在哪里)

    快手参加的抽奖在哪看(快手参加的抽奖在哪里)

  • 红米k40支持30倍变焦吗(红米k40支持90帧)

    红米k40支持30倍变焦吗(红米k40支持90帧)

  • 淘宝追加评价有时间限制吗(淘宝追加评价有效期多久)

    淘宝追加评价有时间限制吗(淘宝追加评价有效期多久)

  • 探探设置为忘不了的人(探探设置念念不忘的人是真的吗)

    探探设置为忘不了的人(探探设置念念不忘的人是真的吗)

  • 华为10x发布时间(华为10x发布时间是多少)

    华为10x发布时间(华为10x发布时间是多少)

  • 淘宝开店的原因怎么写(淘宝开店的原因及梦想)

    淘宝开店的原因怎么写(淘宝开店的原因及梦想)

  • 苹果静音能听到闹钟吗(苹果静音能听到铃声吗)

    苹果静音能听到闹钟吗(苹果静音能听到铃声吗)

  • 无线耳机必须带盒子吗(无线耳机必须带着充电盒吗)

    无线耳机必须带盒子吗(无线耳机必须带着充电盒吗)

  • 华为 pro什么意思(华为pro系列手机介绍)

    华为 pro什么意思(华为pro系列手机介绍)

  • 哈啰出行还不了车,怎么办(哈啰出行还不了车怎么办)

    哈啰出行还不了车,怎么办(哈啰出行还不了车怎么办)

  • 哈罗单车在哪里付钱(哈罗单车在哪里关锁)

    哈罗单车在哪里付钱(哈罗单车在哪里关锁)

  • 光信号不亮算是正常吗(为啥光信号不亮)

    光信号不亮算是正常吗(为啥光信号不亮)

  • 蓝牙配对不成功是什么原因(车载蓝牙配对不成功)

    蓝牙配对不成功是什么原因(车载蓝牙配对不成功)

  • 电位器三个引脚怎么接(电位器三个引脚的定义)

    电位器三个引脚怎么接(电位器三个引脚的定义)

  • 叮咚音箱连不上网怎么解决(叮咚音箱连不上网络怎么办)

    叮咚音箱连不上网怎么解决(叮咚音箱连不上网络怎么办)

  • 内存条用什么擦拭(内存条用什么擦试)

    内存条用什么擦拭(内存条用什么擦试)

  • 怎么解锁微信频率过快(怎么解锁微信频道功能)

    怎么解锁微信频率过快(怎么解锁微信频道功能)

  • 微信3万步等于多少公里(微信三万步是多少米)

    微信3万步等于多少公里(微信三万步是多少米)

  • a1778需要卡贴吗(苹果a1784是卡贴机吗)

    a1778需要卡贴吗(苹果a1784是卡贴机吗)

  • 设备域名是什么意思(无线设备域名登录设备)

    设备域名是什么意思(无线设备域名登录设备)

  • 正压式空气呼吸器的使用步骤(正压式空气呼吸器)

    正压式空气呼吸器的使用步骤(正压式空气呼吸器)

  • 小米nfc是什么(vivo手机有nfc吗)

    小米nfc是什么(vivo手机有nfc吗)

  • 360安全卫士如何设置默认浏览器(360安全卫士如何彻底卸载干净)

    360安全卫士如何设置默认浏览器(360安全卫士如何彻底卸载干净)

  • 西瓜视频怎么取消收藏(西瓜视频怎么取名字才能吸引人?)

    西瓜视频怎么取消收藏(西瓜视频怎么取名字才能吸引人?)

  • lsserv.exe是什么进程  有什么作用 lsserv进程查询(synaudsrv.exe是什么)

    lsserv.exe是什么进程 有什么作用 lsserv进程查询(synaudsrv.exe是什么)

  • 百度编辑器ueditor的高亮代码自动适应设备宽度及自动换行(百度编辑器使用方法)

    百度编辑器ueditor的高亮代码自动适应设备宽度及自动换行(百度编辑器使用方法)

  • 山东省增值税发票勾选认证平台
  • 税金及附加怎么来的
  • 税控盘抵扣可以跨年吗
  • 辞退员工补偿金是按实发工资算还是应发
  • 冲减存货的会计分录
  • 应交税费科目核算
  • 退休后兼职收入需要交税吗
  • 建筑服务专用发票需要进项吗
  • 小规模纳税人购置税控设备
  • 购入材料用于安装工程
  • 一般纳税人可以转小规模吗
  • 个体工商户怎么分配股份
  • 所得税审核费计入什么科目
  • 已确认并转销的应收账款会计分录
  • 超出发票使用范围
  • 代收车船税是什么意思必须收吗
  • 客户到款打到子公司账上如何转回
  • 增值税销售额怎么看
  • 离职后绩效奖金应该按照整月发吗
  • 购入土地建厂房要交的税
  • 调整以前年度所得税汇算清缴报表,在哪调减虚增的成本
  • 出售使用过的设备
  • 买车的收费项目详细清单
  • 文本模式是什么意思?
  • win10哪个版本流畅兼容性好
  • php字符串赋值
  • 广电默认网关是多少
  • 销售产品是销项税额还是进项税额
  • 商业汇票不带息到银行办理贴现公式
  • 前端实现微信联系人二维码
  • 季度所得税表中营业收入填万元还是总金额
  • 应付账款借方怎么重分类
  • php代码用什么工具
  • 出租包装物五五摊销法分录例题
  • js map()
  • c语言设计酒店管理系统
  • 学长学姐面试要注意哪些细节
  • crypto 解密
  • 会员信息查询系统
  • 在mysql中子查询是
  • 收客户样品费怎么做分录
  • 独立核算的分公司注销时账面怎么处理
  • 物流公司驾驶员工资计算方式
  • 资产管理公司的监管部门是谁
  • 支付宝付款对面知道名字吗
  • 免征增值税的会计处理一般纳税人
  • 购车贷款分期利率
  • 税前扣除凭证按照用途分为哪些
  • 失控发票未付款什么意思
  • 现金流量表中应收账款为负是什么意思
  • 转账给个人账户
  • 支付的劳务派遣服务费计入什么科目
  • 工程结算一般由什么等方式
  • 电子承兑汇票是什么
  • 电子发票报销如何处理
  • 关于园林绿化经济的论文
  • 超市会计怎么做会计分录
  • 实用的银行转账怎么转
  • sqlserver msdb
  • 关于国际学校
  • centos7服务器配置
  • win7win10双硬盘双系统
  • cocos2dx3d2d结合
  • js实现计时器在线时间
  • jQuery on绑定的事件
  • 噩梦剧情
  • unity smooth
  • nodejs orm框架
  • unity3d跑酷游戏教程
  • android接听电话
  • 安卓实时屏幕
  • 原始凭证审核会计科目吗
  • 新公司税务登记完后还需要什么流程
  • 北京海淀区国税有几个办税大厅?
  • 缴款单号怎么交学费
  • 企微宝破解
  • 亳州国税局电话号码
  • 税务文件是什么
  • 土地增值税分期清算条件?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设