js批量输入地址获取经纬度

使用js调用高德地图的接口批量输入地址获取经纬度。

以下的请求接口的key请换成你的key。

创建key:我的应用 | 高德控制台 ,服务平台选择《Web服务》。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>js批量输入地址获取经纬度</title><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head><body>获取经纬度<button id="btn">开始</button>
</body><script>var pi = 3.1415926535897932384626var a = 6378245.0var ee = 0.00669342162296594323var x_pi = (pi * 3000.0) / 180.0var R = 6378137function transform(lng, lat) {var dLat = transformLat(lng - 105.0, lat - 35.0)var dLng = transformLng(lng - 105.0, lat - 35.0)var radLat = (lat / 180.0) * pivar magic = Math.sin(radLat)magic = 1 - ee * magic * magicvar sqrtMagic = Math.sqrt(magic)dLat = (dLat * 180.0) / (((a * (1 - ee)) / (magic * sqrtMagic)) * pi)dLng = (dLng * 180.0) / ((a / sqrtMagic) * Math.cos(radLat) * pi)var mgLat = lat + dLatvar mgLng = lng + dLngvar newCoord = {lng: mgLng,lat: mgLat,}return newCoord}function transformLat(x, y) {var ret =-100.0 +2.0 * x +3.0 * y +0.2 * y * y +0.1 * x * y +0.2 * Math.sqrt(Math.abs(x))ret +=((20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) *2.0) /3.0ret +=((20.0 * Math.sin(y * pi) + 40.0 * Math.sin((y / 3.0) * pi)) * 2.0) /3.0ret +=((160.0 * Math.sin((y / 12.0) * pi) + 320 * Math.sin((y * pi) / 30.0)) *2.0) /3.0return ret}function transformLng(x, y) {var ret =300.0 +x +2.0 * y +0.1 * x * x +0.1 * x * y +0.1 * Math.sqrt(Math.abs(x))ret +=((20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) *2.0) /3.0ret +=((20.0 * Math.sin(x * pi) + 40.0 * Math.sin((x / 3.0) * pi)) * 2.0) /3.0ret +=((150.0 * Math.sin((x / 12.0) * pi) +300.0 * Math.sin((x / 30.0) * pi)) *2.0) /3.0return ret}/**火星转84*/this.gcj02_To_gps84 = function (lng, lat) {var coord = transform(lng, lat)var lontitude = lng * 2 - coord.lngvar latitude = lat * 2 - coord.latvar newCoord = {lng: lontitude,lat: latitude,}return newCoord}async function getData(txxt, index) {await axios({method: 'get',url: `https://restapi.amap.com/v3/assistant/inputtips`,params: {output: 'json',location: '101,25',keywords: txxt,key: 'f70fac306fbbe36ec9a8e059ec689214h',},}).then(function (res) {console.log("res.data===", res.data);let tips = res.data.tipslet lnglatArr, adcodefor (let i = 0; i < tips.length; i++) {const item = tips[i];if (item.location.length > 0) {lnglatArr = item.location.split(',')adcode = item.adcodebreak}}console.log("lnglatArr--", lnglatArr);let lng = gcj02_To_gps84(Number(lnglatArr[0]), Number(lnglatArr[1])).lng.toFixed(6)let lat = gcj02_To_gps84(Number(lnglatArr[0]), Number(lnglatArr[1])).lat.toFixed(6)myData[index].push(`经纬度:${lng},${lat}`)myData[index].push(`行政区划:${adcode}`)}).catch(function (err) {console.log(err)})}let btn = document.getElementById('btn')btn.onclick = async function (e) {// getData('楚雄市文化市场综合行政执法大队')initData()}function saveJSON(data, filename) {if (!data) {alert('保存的数据为空')return}if (!filename) filename = 'json.json'if (typeof data === 'object') {data = JSON.stringify(data, undefined, 4)}// 要创建一个 blob 数据var blob = new Blob([data], {type: 'text/json',}),// 添加鼠标事件e = document.createEvent('MouseEvents'),a = document.createElement('a')a.download = filename// 将blob转换为地址// 创建 URL 的 Blob 对象a.href = window.URL.createObjectURL(blob)a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')// web 标准中已废弃// 用以在鼠标事件创建时初始化其属性的值e.initMouseEvent('click',true, // 是否可以冒泡false, // 是否可以阻止事件默认行为window, // 指向window对象0, // 事件的鼠标点击数量0, // 事件的屏幕的x坐标0,0, // 事件的客户端x坐标0,false, // 事件发生时 control 键是否被按下false, // 事件发生时 alt 键是否被按下false, // 事件发生时 shift 键是否被按下false, // 事件发生时 meta 键是否被按下0, // 鼠标按键值null)// 向一个指定的事件目标派发一个事件a.dispatchEvent(e)}
</script><script>let myData = [['名字:甘棠村'],['名字:蔡一村'],['名字:蔡二村'],['名字:蔡三村'],['名字:龙美村'],['名字:东沙村'],['名字:榄塘村'],['名字:东环社区'],['名字:江南社区'],['名字:富豪社区'],['名字:东环社区'],['名字:江南社区'],['名字:富豪社区'],]async function initData(params) {for (let index = 0; index < myData.length; index++) {const element = myData[index]let txt = element[0].split(':')[1]await getData('广州市番禺区市桥街道' + txt, index)}saveJSON(myData)}// initData()
</script></html>

效果图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天润融通携手挚达科技:AI技术重塑客户服务体验

业务爆发式增长&#xff0c;但座席服务却跟不上&#xff0c;怎么办&#xff1f; 智能充电领导者的挚达科技就面临过 这样的问题&#xff0c;让我们来看看如何解决。 2010年以来&#xff0c;国内新能源汽车市场进入高速发展期&#xff0c;作为新能源汽车的重要配件&#xff0c…

51c自动驾驶~合集31

我自己的原文哦~ https://blog.51cto.com/whaosoft/12121357 #大语言模型会成为自动驾驶的灵丹妙药吗 人工智能&#xff08;AI&#xff09;在自动驾驶&#xff08;AD&#xff09;研究中起着至关重要的作用&#xff0c;推动其向智能化和高效化发展。目前AD技术的发展主要遵循…

【代码随想录】贪心

455. 分发饼干 题目 随想录 本质&#xff1a; 对于每个孩子&#xff0c;使用可以满足该孩子的最小的饼干。所以对孩子胃口和饼干进行sort排序&#xff0c;依次将大的饼干满足给孩子。 贪心策略&#xff1a; 想一下局部最优&#xff0c;想一下全局最优&#xff0c;如果局部最优…

QWen2.5学习

配置环境 pip install transformers 记得更新一下&#xff1a;typing_extensions pip install --upgrade typing_extensions 安装modelscope modelscope/modelscope: ModelScope: bring the notion of Model-as-a-Service to life. 下载这个仓库的代码上传到服务器解压 推…

存算分离的过去、现在和未来

存算分离架构&#xff0c;作为数据处理领域的一个重要概念&#xff0c;从其最初的雏形到如今广泛应用&#xff0c;经历了多次迭代和变革。雁飞老师在分享中从过去的存算架构&#xff0c;逐步讲述存算分离的演进&#xff0c;现今的存算分离架构的优势及其在 Databend 中的体现&a…

web——upload-labs——第九关——特殊字符::$DATA绕过

特殊字符::$DATA绕过 典型绕过场景 在一些系统中&#xff0c;::$DATA 被用于绕过文件路径的限制。比如&#xff1a; 路径过滤绕过&#xff1a;如果系统有某种机制来检查和限制文件路径&#xff08;例如&#xff0c;禁止访问某些系统目录或敏感文件&#xff09;&#xff0c;通…

图的存储、遍历以及Dijkstra/Floyd/Kruskal/Prim/拓扑排序/关键路径(实验8--作业)

图–数据结构操作与算法全解析 一、引言 图作为一种重要的数据结构&#xff0c;在计算机科学与众多领域中都有着广泛的应用。它能够有效地描述和解决各种复杂的关系问题&#xff0c;如网络拓扑、路径规划、资源分配等。本文将详细介绍图的相关操作和知识点&#xff0c;包括图…

利用Vue的相关特性,制作相册

目录 一、整体结构 1、设置一个div盒子 2、设置图片展示 3、页码按钮 4、翻页按钮 二、CSS样式 1、 .clear_ele::after 2、设置图片、按钮等属性的样式 三、JavaScript部分&#xff08;Vue&#xff09; 1、导入模块 2、创建Vue应用 ①定义响应式数据 ②定义事件处…

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…

(C语言)文件操作

目录 文件 程序文件 数据文件 文件名 ​编辑数据文件的分类 文件的打开和关闭 流 标准流 1&#xff09;stdin 2&#xff09;stdout 3&#xff09;stderr 文件指针 文件的打开和关闭 对文件内容操作的函数 1&#xff09;fgetc&#xff0c;fputc 2&#xff09;fp…

AI修改验证账号名正则表达式的案例

我有如下的一行老代码&#xff0c;今天复用的时候发现当时注释写错了&#xff0c;改好以后请AI再检查一遍。 因为这次AI的分析的思路很典范&#xff0c;所以拿出来分享一下。 提问&#xff1a; 请看一下这个正则和后面的注释是否匹配&#xff0c;现在的验证规则是否保证账号至…

SQL进阶技巧:如何进行数字范围统计?| 货场剩余货位的统计查询方法

目录 0 场景描述 1 剩余空位区间和剩余空位编号统计分析 2 查找已用货位区间 3 小结 0 场景描述 这是在做一个大型货场租赁系统时遇到的问题&#xff0c;在计算货场剩余存储空间时&#xff0c;不仅仅需要知道哪些货位是空闲的&#xff0c;还要能够判断出哪些货位之间是连…

彻底理解如何保证Redis和数据库数据一致性问题

一.背景 系统中缓存最常用的策略是&#xff1a;服务端需要同时维护 DB 和 Cache 并且是以 DB 的结果为准&#xff0c;那么就可能出现 DB 和 Cache 数据不一致的问题。 二.读数据 逻辑如下&#xff1a; 当客户端发起查询数据的请求&#xff0c;首先回去Redis中查看没有没该数据&…

后仿真中的SDF语法之关键字 IOPATH 用法详解

在后仿真中&#xff0c;SDF&#xff08;Standard Delay Format&#xff09;文件用于描述设计的时序信息&#xff0c;而IOPATH是SDF中的一个关键结构&#xff0c;用于定义单元间的路径延迟。以下是IOPATH关键字的用法及其相关内容的详细介绍&#xff1a; IOPATH结构旨在将延迟数…

Springboot 整合 Java DL4J 搭建智能问答系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“网上书城管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 用户注册界面…

测评部署和管理 WordPress 最方便的面板

新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到&#xff0c;无论是宝塔还是1Panel&#xff0c;部署和管理WordPress都有些繁琐&#xff0c;而且还需要额外去配置Nginx和M…

网络安全问题概述

1.1.计算机网络面临的安全性威胁 计算机网络上的通信面临以下的四种威胁&#xff1a; (1) 截获——从网络上窃听他人的通信内容。 (2) 中断——有意中断他人在网络上的通信。 (3) 篡改——故意篡改网络上传送的报文。可应用于域名重定向&#xff0c;即钓鱼网站。 (4) 伪造——伪…

视觉顶会论文 | 基于Swin Transformer的轴承故障诊断

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

Altenergy电力系统控制软件 status_zigbee SQL注入漏洞复现(CVE-2024-11305)

0x01 产品简介 Altenergy电力系统控制软件是Altenergy Power System推出的一款专业软件。旨在为用户提供全面、高效、安全的电力系统控制解决方案。广泛应用于各类电力系统领域,如电力调度中心、发电厂、变电站、工业园区等。通过该软件的应用,用户可以实现对电力系统的全面…