前端点击地图上的位置获取当前经纬度

地图封装组件

<template>
  <div id="container"></div>
</template>
<script>
  import AMapLoader from '@amap/amap-jsapi-loader';

  export default {
      name: "Mapview",
      props:{
        mapinfo:{
          type:Object,
          default:function(){
            return {}
          }
        },
        maptype:{
          type:String,
          default:''
        }
      },
      data() {
          return {
              map:null,
              isDraw:false,
              editpology:null,
              polyEditor:null,
              wz:null,
              loca:null
          }
      },
      watch:{
        mapinfo(newdata){
          if(newdata.data != null){
            console.log(newdata)
          }
        }
      },
      created() {

      },
      mounted() {
        this.initAMap();
        console.log(this.mapinfo)
      },
      methods: {
          initAMap() {
              AMapLoader.load({
                  key: '16e7ac6ee499a277e372a63e39cbdee9',  //设置您的key
                  version: "2.0",
                  plugins: ['AMap.ToolBar', 'AMap.Driving',"AMap.MouseTool",
                  "AMap.PolygonEditor"," AMap.MapType","AMap.Polygon","AMap.Marker"],
                  AMapUI: {
                      version: "1.1",
                      plugins: [],

                  },
                  Loca: {
                      version: "2.0"
                  },
              }).then((AMap) => {
                  let _this = this;
                  if(this.maptype){
                    var satelliteLayer = new AMap.TileLayer.Satellite();
                    this.map = new AMap.Map("container", {
                        viewMode: "3D",
                        zoom: 10,
                        /* pitch:60, */
                        skyColor :'#1682a9',
                        layers:[satelliteLayer],
                        zooms: [2, 22],
                    });
                    /* this.map.addControl(new AMap.MapType({
                            defaultType:1 //0代表默认,1代表卫星
                        })); */
                   /* AMapUI.loadUI(['control/BasicControl'], function(BasicControl) {
                      //图层切换控件
                      _this.map.addControl(new BasicControl.LayerSwitcher({
                          position: 'rt'
                      }));
                    }) */

                  }else{
                    this.map = new AMap.Map("container", {
                        zoom: 10,
                        pitch:60,
                        zooms: [2, 22],
                    });


                    AMapUI.loadUI(['control/BasicControl'], function(BasicControl) {

                          //添加一个缩放控件
                          _this.map.addControl(new BasicControl.Zoom({
                              position: 'lt'
                          }));

                          //缩放控件,显示Zoom值
                          _this.map.addControl(new BasicControl.Zoom({
                              position: 'lb',
                              showZoomNum: true
                          }));

                          //图层切换控件
                          _this.map.addControl(new BasicControl.LayerSwitcher({
                              position: 'rt'
                          }));
                      });
                  }


                 this.loca = new Loca.Container({
                   map: this.map
                 });

                  /* this.map.addControl(new AMap.MapType({defaultType:0})) */


                  _this.addClickEvent()


                     _this.map.on('complete', function() {
                       if(_this.$parent.getmapinfo){
                         _this.$parent.getmapinfo()
                       }else{
                         _this.$emit('initmap')
                        let styleName = "amap://styles/fresh";
                         _this.map.setMapStyle(styleName);
                       }
                     })

              }).catch(e => {
                  console.log(e);
              })
          },
          addClickEvent(){
            let _this = this
            var clickHandler = function(e) {
              console.log(e.target)
              if(this.marker == null){
                this.marker =  new AMap.Marker({
                    position: [e.lnglat.getLng(),e.lnglat.getLat()]
                });
                this.marker.setMap(_this.map);
              }else{
                this.marker.setPosition([e.lnglat.getLng(),e.lnglat.getLat()])
              }
              _this.wz = [e.lnglat.getLng(),e.lnglat.getLat()]

              _this.$emit("getmaplocl",[e.lnglat.getLng(),e.lnglat.getLat()])
            };



            // 绑定事件
            this.map.on('click', clickHandler);
            // 解绑事件
            //this.map.off('click', clickHandler);
          },
         addPolygon(data){
           data =JSON.parse(data)
           let polygon = new AMap.Polygon({
               path: data,
              /* fillColor: '#ccebc5',
               strokeOpacity: 1,
               fillOpacity: 0.5,
               strokeColor: '#2b8cbe',
               strokeWeight: 1,
               strokeStyle: 'dashed',
               strokeDasharray: [5, 5], */
             });

            this.map.add(polygon)
            polygon.on('click',()=>{
              alert(1)
              this.editpology = polygon
              this.edit()
            })
            this.map.setFitView()
         },
         addPolygons(data,name,id){
           data =JSON.parse(data)
           let polygon = new AMap.Polygon({
               path: data,
              /* fillColor: '#ccebc5',
               strokeOpacity: 1,
               fillOpacity: 0.5,
               strokeColor: '#2b8cbe',
               strokeWeight: 1,
               strokeStyle: 'dashed',
               strokeDasharray: [5, 5], */
             });

            polygon.on('click',()=>{
              this.$emit('clickpoly',id)
            })

            var text = new AMap.Text({
                position: polygon.getBounds().getCenter(),
                anchor: 'bottom-center',
                text: name,
                style: {color:'white','background-color':'rgba(220,38,38,0)','border':'none'},
            });
            text.on('click',()=>{
              this.$emit('clickpoly',id)
            })

            text.addTo(this.map)

            this.map.add(polygon)
         },
         addmarks(data,id){
            let marker =  new AMap.Marker({
               position: data
           });
           marker.on('click',()=>{
             //alert(id)
             this.$emit('clickmarker',id)
           })
            marker.setMap(this.map);
         },
         fitview(){
           this.map.setFitView()
         },
         draw() {
              this.isDraw = true;
              this.mouseTool = new AMap.MouseTool(this.map);
              this.mouseTool.polygon({
                //fillColor: "#00b0ff",
                //strokeColor: "#80d8ff"
                //同Polygon的Option设置
              });
              this.mouseTool.on("draw", e => {
                // 监听画多边形结束
                console.log("draw");
                this.overlays = [];
                console.log(e.obj);
                console.log(e.obj.getArea())
                console.log(e.obj.getPath())
                console.log(e.obj.getOptions())
                console.log(e.obj)
                console.log(e.obj.getBounds().getCenter())
               // console.log(e.obj.getOptions().path)

                this.$emit("update:mapinfo",{
                  area:e.obj.getArea(),
                  data:e.obj.getOptions().path
                })

                var text = new AMap.Text({
                    position: e.obj.getBounds().getCenter(),
                    anchor: 'bottom-center',
                    text: '文本标记',
                    style: {'background-color':'rgba(220,38,38,0)','border':'none'},
                });
                text.addTo(this.map)


                this.overlays.push(e.obj);
                this.mouseTool.close();
                this.isDraw = false;
              });
            },
           edit() {
                //console.log("bianji");
                //let polygon = this.overlays[0];
                if(this.editpology == null){
                  return
                }
                let polygon =  this.editpology;
                this.polyEditor = new AMap.PolygonEditor(this.map, polygon);
                // polyEditor.addAdsorbPolygons(polygon1)
                this.polyEditor.open();
                polygon.on("dblclick", () => {
                  console.log("双击");
                  this.polyEditor.close();
                });
                this.polyEditor.on("end", event => { // polyEditor  close关闭时执行
                  console.log(event.target.getPath());
                  this.$emit("update:mapinfo",{
                    area:polygon.getArea(),
                    data:polygon.getOptions().path
                  })
                });
              },
              canceledit(){
                if(this.polyEditor){
                  this.polyEditor.close()
                }
              },
              clearmap(){
                this.map.clearMap();
              },
              animate(){

                 this.loca.animate.start();
                  let speed = 1;
                  let _this = this
                    // 下钻
                  this.loca.viewControl.addAnimates([{
                    pitch: {
                      value: 0,
                      control: [[0, 20], [1, 0]],
                      timing: [0, 0, 0.8, 1],
                      duration: 3000 / speed,
                    },
                    zoom: {
                      value: 15.9,
                      control: [[0, 12.8], [1, 15.9]],
                      timing: [0, 0, 0.8, 1],
                      duration: 3000 / speed,
                    },
                    rotation: {
                      value: -20,
                      control: [[0, 20], [1, -20]],
                      timing: [0, 0, 0.8, 1],
                      duration: 2000 / speed,
                    },
                  }/* ,{
                  pitch: {
                    value: 0,
                    control: [[0, 0], [1, 100]],
                    timing: [0.1, 0, 0.7, 1],
                    duration: 2000 / speed,
                  },
                  rotation: {
                    value: 360,
                    control: [[0, 260], [1, 361]],
                    timing: [0.3, 0, 0.7, 1],
                    duration: 2000 / speed,
                  },
                  zoom: {
                    value: 10.8,
                    control: [[0, 17.5], [1, 13.8]],
                    timing: [0.3, 0, 0.7, 1],
                    duration: 2500 / speed,
                  },
                } */,{
                      // 环绕
                      pitch: {
                        value: 0,
                        control: [[0, 40], [1, 50]],
                        timing: [0.3, 0, 1, 1],
                        duration: 7000 / speed,
                      },
                      rotation: {
                        value: 360,
                        control: [[0, -80], [1, 260]],
                        timing: [0, 0, 0.7, 1],
                        duration: 7000 / speed,
                      },
                      zoom: {
                        value: 11,
                        control: [[0.3, 16], [1, 17]],
                        timing: [0.3, 0, 0.9, 1],
                        duration: 5000 / speed,
                      },
                    }], function () {


                  });
              }

      }
  }
</script>

<style scoped>
  #container {
      padding: 0px;
      margin: 0px;
      width: 100%;
      height: 100%;
      position: absolute;
  }
</style>

在vue页面内引入
import gdmap from ‘组件路径’
父子组件传参
父组件内

<gdmap @getmaplocl="getmaplocal" />



methods:{
   getmaplocal(data){
      console.log(data)
      this.form.equipmentLongitude = data.join(',')
    },
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572582.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 vllm 本地部署 cohere 的 command-r

使用 vllm 本地部署 cohere 的 command-r 0. 引言1. 安装 vllm2. 本地部署 cohere 的 command-r3. 使用 cohere 的 command-r 0. 引言 此文章主要介绍使用 使用 vllm 本地部署 cohere 的 command-r。 1. 安装 vllm 创建虚拟环境&#xff0c; conda create -n myvllm python…

Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本&#xff0c;演示 Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&…

kafka大数据采集技术实验(未完待续)

Kafka环境搭建 下载地址&#xff1a;https://link.zhihu.com/?targethttps%3A//kafka.apache.org/downloads解压启动zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties需要注意的是 : " c o n f i g / z o o k e e p e r . p r o p e r t i e s &q…

维态思(上海)环保科技有限公司 | 2024全国水科技大会暨技术装备成果展览会

嘉宾简介 胡建龙 维态思&#xff08;上海&#xff09;环保科技有限公司 总经理 报告题目&#xff1a;微生态滤床 植物工厂——小城镇生活污水生态净化及零排放案例分享 国家注册设备工程师&#xff08;给排水&#xff09;、上海市&#xff08;合作交流&#xff09;五四青年…

BUUCTF---misc---[ACTF新生赛2020]outguess

1、下载附件&#xff0c;解压之后得到下面信息 2、查看图片属性&#xff0c;发现有个核心价值观编码&#xff1b;解码为abc 3、flag.txt提示 4、结合题目&#xff0c;这是一个outguess隐写 5、用kali先下载安装隐写库 6、使用命令-k(密钥)&#xff1b;-r(将图片里面的隐写信息…

InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格

作者&#xff1a;Jiale Xu&#xff0c;Weihao Cheng&#xff0c;Yiming Gao等 编译&#xff1a;东岸因为一点人工一点智能 InstantMesh&#xff1a;利用稀疏视图大规模重建模型从单张图像高效生成3D网格在这项工作中&#xff0c;我们提出了InstantMesh&#xff0c;一个开源的…

免费在英伟达官网使用多个开源AI大模型

英伟达官网能体验到多个聊天AI和图片生成AI&#xff0c;不废话直接上链接 AI开源大模型&#xff08;https://build.nvidia.com/explore/discover?api-keytrue&#xff09; 开源的AI大模型有meta的llama3-8b和llama3-70b、snowflake的arctic、microsoft的phi-3-mini、mistral…

【Linux系统编程】第九弹---权限管理操作(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、目录权限 2、粘滞位 总结 1、目录权限 首先提出一个问题&#xff0c;删除一个文件需要什么权限呢&#xff1f;&#xff1f…

虚拟机软件哪个好用 虚拟机软件哪个可以玩暗区突围 虚拟机软件排名 PD19虚拟机 Mac类虚拟机运行Windows程序 CrossOver支持的热门游戏

随着跨系统互联的需求不断增长&#xff0c;越来越多的用户会选择在电脑系统中安装虚拟机软件&#xff0c;进而更加便捷地访问和操作其他系统。一款好用的虚拟机软件能够提高系统互联的效率&#xff0c;进而实现了资源共享、测试环境搭建等多种用途。而在众多的虚拟机软件当中&a…

张驰咨询:降本增效企业突破市场重围的制胜法宝

企业在快速发展的过程中&#xff0c;降本增效是永恒不变的主题。毕竟&#xff0c;在竞争激烈的市场环境中&#xff0c;只有不断提高效率和降低成本&#xff0c;才能在竞争中立于不败之地。那么&#xff0c;为什么企业需要降本增效呢&#xff1f; 首先&#xff0c;降本增效是企业…

vue+springboot的登录图片验证码(前端对接报错)

tip:这个只是一个效果实际要运用&#xff0c;还是需要改改滴&#xff01; 后台Java自带的 本来我是打算用第三方库的&#xff0c;没有整出来&#xff0c;就跟沈某人说不会来着&#xff0c;他说最好用Java自带的&#xff0c; 不然换个系统第三方的就不能用了&#xff0c;大概…

不可以论文查重,也包含了查AI率吗?

临近毕业&#xff0c;完成一篇符合学术规范的毕业论文是一项繁琐又具挑战性的任务。撰写完论文后&#xff0c;反复的查重降重已让人心身疲累。今年&#xff0c;学校又提出了新要求&#xff0c;论文还需要通过AIGC检测系统&#xff08;www.checkaigc.com&#xff09;才行&#x…

Vue2学习笔记(尚硅谷天禹老师)

目录 一、入门案例 二、模板语法 三、数据绑定 四、el和data的两种写法 五、MVVM模型 六、Object.defineproperty方法 七、Vue中响应式原理 八、数据代理 九、methods配置项 十、Vue中的事件处理 十一、Vue中的键盘事件 十二、计算属性 十三、监视属性watch 十四、绑定Class样式…

【echarts】数据起点不从X轴的原点开始【不从0开始】

echarts折线图x轴不从0开始怎么办&#xff1f; 或者说为什么有些图是这样的 有些却是这样的 原因出在这里&#xff1a; boundaryGap: false 默认是true&#xff0c;是指坐标轴两边留白。改为false&#xff1a;不留白即从原点开始。 看一下官方的说明

中小型企业网络实战topo

1、设备命名&#xff0c;务必按照规范进行命名规划&#xff1b; 2、子网划分&#xff0c;申请到了公网地址段&#xff0c;201.1.1.0/24&#xff0c;根据公司的实际情况&#xff0c;合理规划拓扑需要的公网地址&#xff0c; 做到合理规划不浪费&#xff1b; 3、子网划分&a…

嵌入式开发学习--进程、线程

什么是进程 进程和程序的区别 概念 程序&#xff1a;编译好的可执行文件&#xff0c;存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09;&#xff0c;程序是静态的&#xff0c;没有任何执行的概念。 进程&#xff1a;一个独立的可调度的任务&#xff0c;执行一…

做抖音小店如何选品?这几个技巧,精准“锁定”爆品!

哈喽~我是电商月月 做抖音小店最重要的就是选品&#xff0c;这点大家都知道 一个店铺商品选的好&#xff0c;顾客喜欢&#xff0c;质量完好&#xff0c;销量和售后都不用操心&#xff0c;和达人合作时&#xff0c;爆单的机会也就越高 那这种商品是什么样的&#xff0c;新手开…

基于ssm微信小程序的4S店客户管理系统

采用技术 基于ssm微信小程序的4S店客户管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员端 管理员登录 管理员首页 用户管理 门店管理 …

RustGUI学习(iced)之小部件(一):如何使用按钮和文本标签部件

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

高效一键改写文章,智能伪原创工具轻松搞定

在信息爆炸的时代&#xff0c;想要高效率的一键改写文章却是很多创作者都想了解的方法。然而在人工智能技术发展的今天&#xff0c;智能伪原创工具的出现&#xff0c;也正是成了广大创作者用来一键改写文章的好方法&#xff0c;因为它的优势&#xff0c;可以为大家轻松完成改写…