百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)

wptr33 2025-04-11 08:29 33 浏览

使用方法

在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可

功能:

1、点击鼠标拾取坐标。

2、地图缩放。

3、拾取坐标拖动。

4、坐标点标注编辑。

5、坐标点删除。

6、定位到拾取的坐标点。

7、Excel导出坐标点。

8、街景、卫星、混合地图切换


代码如下:




    
    
    
    鼠标拾取地图坐标
    <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
    <script type="text/javascript" src='https://cdn.sheetjs.com/xlsx-0.19.2/package/dist/xlsx.full.min.js'></script>



编号 经度 纬度 描述 操作 定位
<script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值&plugin=AMap.Autocomplete"></script> <script type="text/javascript"> var save=false; var num=0; // 数组 let data = []; //标记 var markers = []; //高德地图 var map = new AMap.Map("container", { resizeEnable: true, expandZoomRange:true, zoom:20, //设置初始化级别 zooms:[3,20] //设置缩放级别范围 3-20 级 }); // 构造官方卫星、路网图层 var satelliteLayer = new AMap.TileLayer.Satellite(); var roadNetLayer = new AMap.TileLayer.RoadNet(); //设置鼠标样式 // map.setDefaultCursor("crosshair"); //为地图注册click事件获取鼠标点击出的经纬度坐标 map.on('click', function(e) { data.push({ id:num, lng:e.lnglat.R, lat:e.lnglat.Q, remark:"" }); initdata(); num++; }); //初始化数据 function initdata(){ //1、清除所有图标 markers=[]; map.clearMap(); //2、渲染图标 for(let i=0;i<data.length;i++){ //添加图标 var marker = new AMap.Marker({ // 将 html 传给 content content: '
'+data[i].id+'
', position:[data[i].lng,data[i].lat], offset:new AMap.Pixel(-9,-18), //中心点 draggable: true, // 设置是否可以拖拽 cursor: 'move', //拖动时的鼠标样式 raiseOnDrag: true, //托拽效果 extData:i //自定义数据 }); //鼠标移动 marker.on('mouseup',function (e3) { var index=e3.target.De.extData; data[index].lng=e3.lnglat.R; data[index].lat=e3.lnglat.Q; initdata(); }); markers.push(marker); //保存到标识列表中 } map.add(markers); //添加标识到地图中 /* * 渲染表格 */ let tbodyinner = document.getElementsByTagName("tbody")[0] let html = '' for(let i=0;i<data.length;i++){ html+=` ${data[i].id} ${data[i].lng} ${data[i].lat} ${data[i].remark} ` } // tbody.innerHTML="..."往tbody中添加内容 tbodyinner.innerHTML = html addEvents() save=false; } // 表格添加监听click事件 function addEvents(){ let subject = document.getElementsByName("grade") for(let i=0;i<subject.length;i++){ subject[i].addEventListener('click',function(e){ edit(this,e) }); } let delbut = document.getElementsByName("del") for(let i=0;i<delbut.length;i++){ delbut[i].addEventListener('click',function(e){ deletes(e) }); } let locate = document.getElementsByName("locate") for(let i=0;i<delbut.length;i++){ locate[i].addEventListener('click',function(e){ locates(e) }); } } //表格编辑 function edit(i,e){ let oldvalue = i.innerHTML; // 设置该标签为空 i.innerHTML = '' // 添加input对象 let inp = document.createElement("input") inp.value = oldvalue inp.classList.add("inputClass") // 添加子节点 i.appendChild(inp) // 获取文本中的内容 inp.select() // 失去焦点事件 inp.onblur = function(){ i.innerHTML = inp.value; var index=e.target.getAttribute("index"); data[index].remark=inp.value; } } //删除表格行数据 function deletes(e){ var r=confirm("确定删除?"); if (r==true){ var index=e.target.getAttribute("index"); //表格数据移除 data.splice(index, 1); //地图上移除标记 map.remove([markers[index]]); //列表中移除标记 markers.splice(index, 1); initdata(); } else{ console.log("取消"); } } //删除表格行数据 function locates(e){ var i=e.target.getAttribute("index"); map.setCenter([data[i].lng, data[i].lat]); //设置地图中心点 map.setZoom(18); //设置缩放等级 } //导出Excel function noDomExportExcel() { // 使用 XLSX.utils.aoa_to_sheet(excleData); var dataArry=[]; dataArry.push(["编号","经度","纬度","描述"]); for(let i=0;i<data.length;i++){ var arry=[]; arry.push(data[i].id); arry.push(data[i].lat.toString().padEnd(18,'0')); arry.push(data[i].lng.toString().padEnd(18,'0')); arry.push(data[i].remark); dataArry.push(arry); } // 制作工作表的方式有很多种,以数组和对象为例 const worksheet = XLSX.utils.aoa_to_sheet(dataArry); // 新建一个工作簿 const workbook = XLSX.utils.book_new();//创建虚拟workbook /* 将工作表添加到工作簿,生成xlsx文件(book,sheet数据,sheet命名)*/ XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); /* 输出工作表, 由文件名决定的输出格式(book,xlsx文件名称)*/ XLSX.writeFile(workbook, '标记信息.xlsx'); save=true; } //街道图层 function setRoadNetLayer() { map.remove(satelliteLayer); map.add(roadNetLayer); } //卫星图层 function setSatelliteLayer() { map.remove(roadNetLayer); map.add(satelliteLayer); } //混合图层 function setMixLayer() { map.add(roadNetLayer); map.add(satelliteLayer); } //在关闭页面时弹出确认提示窗口 window.onbeforeunload = function(event){ if(save){ console.log("已经导出,放心关闭"); }else{ return '您可能有数据没有导出,确认关闭?'; } }; </script>



相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...