根据输入的详细地址解析经纬度

在这里插入图片描述

摘要:

今天遇到一个需求:就是做客户导入的时候因为导入的客户地址的时候没有经纬度的,但是同步的时候需要经纬度的,所以还是要根据客户提供的详细地址解析出来对应的经纬度!回填到对应的经纬度的表单之中进行客户的同步功能!

在这里插入图片描述

<template><div><el-input v-model="formData.detailAddress" placeholder="请输入详细地址" @input="fetchCoordinates" /><p>经度: {{ coordinates.lng }}</p><p>纬度: {{ coordinates.lat }}</p></div>
</template><script lang="ts">
import { ref, reactive } from 'vue';export default {setup() {const formData = reactive({detailAddress: ''});const coordinates = reactive({lng: '',lat: ''});const fetchCoordinates = async () => {if (formData.detailAddress) {try {const encodedAddress = encodeURIComponent(formData.detailAddress);const apiKey = 'YOUR_API_KEY'; // 替换为你的 API 密钥const response = await fetch(`https://api.map.com/geocode/json?address=${encodedAddress}&key=${apiKey}`);//const response = await fetch(`https://restapi.amap.com/v3/geocode/geo?key=${apiKey}&address=${encodedAddress}`);if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const data = await response.json();console.log('Response data:', data); // 输出响应数据if (data.status === 'OK') {coordinates.lng = data.results[0].geometry.location.lng;coordinates.lat = data.results[0].geometry.location.lat;} else {console.error('地理编码失败', data);}} catch (error) {console.error('请求失败', error);}}};return {formData,coordinates,fetchCoordinates};}
};
</script>

代码功能解释
模板部分:

  • 使用 el-input 组件绑定 formData.detailAddress,并设置 @input 事件监听器,当用户输入地址时调用
    fetchCoordinates 方法。 显示解析后的经纬度。

脚本部分:

  • 使用 reactive 创建响应式对象 formData 和 coordinates。
  • 定义 fetchCoordinates 方法,该方法在用户输入地址时被调用。
  • 在 fetchCoordinates 方法中,检查 formData.detailAddress 是否有值,如果有值则发起地理编码请求。
  • 添加了对 response.ok 的检查,确保请求成功后再解析 JSON 数据。
  • 请求成功后,解析返回的 JSON 数据,提取经纬度并更新 coordinates 对象。
  • 如果请求失败或地理编码失败,记录详细的错误信息。
  • 添加了 console.log 语句,输出响应数据,帮助调试。

控制流图:

在这里插入图片描述
详细解释

  • A[用户输入详细地址]: 用户在输入框中输入详细地址。
  • B[调用 fetchCoordinates 方法]: 输入框的 @input 事件触发,调用 fetchCoordinates 方法。
  • C{地址是否为空?}: 检查 formData.detailAddress 是否为空。
  • D[结束]: 如果地址为空,结束流程。
  • E[发起地理编码请求]: 发起地理编码请求。
  • F{请求是否成功?}: 检查请求是否成功。
  • G[记录请求失败错误]: 如果请求失败,记录错误信息。
  • H[解析返回数据]: 解析返回的 JSON 数据。
  • I{解析是否成功?}: 检查解析是否成功。
  • J[记录解析失败错误]: 如果解析失败,记录错误信息。
  • K[更新经纬度]: 更新 coordinates 对象中的经纬度。
  • L[显示经纬度]: 在页面上显示解析后的经纬度。

调试建议:

  • 检查 API 地址:确保
    https://api.map.com/geocode/json?address=KaTeX parse error: Expected 'EOF', got '&' at position 17: …encodedAddress}&̲key={apiKey}
    是正确的。
  • 检查 API 密钥:确保 YOUR_API_KEY 替换为你实际的 API 密钥。
  • 查看网络请求:使用浏览器的开发者工具(如 Chrome DevTools)查看网络请求的详细信息,包括请求头和响应体。
  • 日志输出:在代码中添加更多的 console.log 语句,输出请求和响应的详细信息,帮助定位问题。
  • API 文档:查阅 API 提供方的文档,确保请求参数和格式正确。
<el-form-item label="详细地址" prop="detailAddress" label-width="120px"><el-input v-model="formData.detailAddress" placeholder="请输入详细地址" @input="fetchCoordinates" />
</el-form-item>
<el-form-item label="坐标" prop="splon" label-width="120px"><el-input disabled oninput="value = value.replace(/[^0-9.-]/g,'')" v-model="formData.splon" class="!w-115px !mr-2px" clearable placeholder="请选择经度" /><el-input disabled oninput="value = value.replace(/[^0-9.-]/g,'')" v-model="formData.splat" class="!w-115px" clearable placeholder="请选择纬度" /><el-button text type="primary" size="small" @click="openChooseMap">选择坐标</el-button>
</el-form-item>
const fetchCoordinates = async () => {if (formData.value.detailAddress) {try {const encodedAddress = encodeURIComponent(formData.value.detailAddress);const apiKey = 'YOUR_API_KEY';const response = await fetch(`https://restapi.amap.com/v3/geocode/geo?key=${apiKey}&address=${encodedAddress}`);if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const data = await response.json();console.log('Response data:', data); // 输出响应数据if (data.status == '1' || data.statusCode == 200) {const location = data.geocodes[0].location;formData.value.splon = location.split(',')[0];formData.value.splat = location.split(',')[1];} else {// console.error('解析地址失败:', data);}} catch (error) {console.error('请求失败', error);}}
};

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

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

相关文章

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款旅游类智能体的开发,来体验一下我的智能体『​​​​​​​背包客』

&#x1f680;『背包客』点击前往体验&#xff1a;https://mbd.baidu.com/ma/s/d7RHMlWh 最近参加了百度文心智能体平台AI大师工坊&#x1f389;活动&#xff0c;在这个活动中&#xff0c;我利用文心平台提供的各种插件、大模型等工具&#xff0c;打造了一个工具类的智能体应用…

WPF的触发器(Trigger)

WPF&#xff08;Windows Presentation Foundation&#xff09;是微软.NET框架的一部分&#xff0c;用于构建Windows客户端应用程序。在WPF中&#xff0c;触发器&#xff08;Triggers&#xff09;是一种强大的功能&#xff0c;允许开发者根据控件的状态或属性值来动态改变控件的…

ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算——从0基础到15个案例实战应用

在科技飞速发展的时代&#xff0c;遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究&#xff0c;空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而&#xff0c;对于许多专业人士而言&#xff0c;如何高效地处…

Java中String的length与Oracle数据库中VARCHAR2实际存储长度不一致的问题

目录 一、根本原因 二、解决方案 一、根本原因 Oracle数据库新增数据的时候报如下错误&#xff1a; 先给大家看个小案例&#xff0c;这样更好去理解&#xff0c;下面是一段测试代码&#xff1a; 这里面我分别列举了三种字符串&#xff0c;中文&#xff0c;英文和数字以及两种…

动态规划 —— 路径问题-礼物的最大价值

1. 剑指offer-JZ47-路径问题-礼物的最大价值 题目链接&#xff1a; 礼物的最大价值_牛客题霸_牛客网https://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134?tpId265&tqId39288&ru/exam/oj 2. 算法原理 状态表示&#xff1a;以莫一个位置位置为结尾 d…

安装git-lfs发生报错Could not find Git; can not register Git LFS.解决方案

解决方案&#xff1a; 步骤1.安装Github-Deskop Download GitHub Desktop | GitHub Desktophttps://desktop.github.com/download/ 步骤2.安装 Git&#xff01; Git for WindowsWe bring the awesome Git VCS to Windowshttps://gitforwindows.org/ 这两个安装完成之后即可…

Unity hub登录时一直无法进入license

直接只卸载unity hub&#xff0c;然后重新下载unity hub安装即可&#xff0c;重新登录即可。 有时会自动关联安装的位置&#xff0c;如果不能&#xff0c;则手动定位添加即可。 网上各种修复的方法操作费时费力。

three.js使用ShaderMaterial实现聚光灯光源demo

文章目录 顶点片元全部 核心&#xff1a; 顶点 varying vec3 vNormal;varying vec3 vViewPosition;void main() {vNormal normalMatrix * normal;vNormal normalize( vNormal );vec4 modelViewPosition modelViewMatrix * vec4(position, 1.0);gl_Position projectionMat…

【jvm】堆的内部结构

目录 1. 说明2. 年轻代&#xff08;Young Generation&#xff09;2.1 说明2.2 Eden区2.3 Survivor区 3. 老年代&#xff08;Old Generation&#xff09;3.1 说明3.2 对象存放3.3 垃圾回收 4. jdk7及之前5. jdk8及之后 1. 说明 1.JVM堆的内部结构主要包括年轻代&#xff08;You…

在线教育系统源码开发详解:网校培训平台搭建的核心技术

本篇文章&#xff0c;笔者将详细介绍在线教育系统源码的开发过程&#xff0c;重点聚焦网校培训平台搭建的核心技术&#xff0c;以期为有意从事在线教育行业的开发者提供实用的参考。 一、在线教育系统的构成 前端负责用户的交互体验&#xff0c;后端处理业务逻辑&#xff0c;…

DeepLearn-实现天气的识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 本次使用的数据集有晴天、雨天、多云和日出。 导入基本的包 包括读取文件、图像处理、科学计算和tensorflow的api包layers是层模块&#xff0c;提供了神经网络…

pycharm与anaconda下的pyside6的安装记录

一、打开anaconda虚拟环境的命令行窗口&#xff0c;pip install&#xff0c;加入清华源&#xff1a; pip install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple 二、打开pycharm&#xff0c;在文件--设置--工具--外部工具中配置一下三项&#xff1a; 1、 QtDesigner…

Java常用任务调度

JAVA 任务调度技术 前言 在日常开发过程中&#xff0c;我们经常会遇到周期性执行某段代码的场景。比如定期同步订单&#xff0c;定期更新商品信息&#xff0c;定期发送消息等。这些重复执行的代码可以抽象为一个任务(Task)。 一个Task的特点如下&#xff1a; 包含需要执行的业…

将多个commit合并成一个commit并提交

0 Preface/foreword 1 压缩多个commit方法 1.1 git merge --squash 主分支&#xff1a;main 开发分支&#xff1a;test 当前在test分支提交了8个commits&#xff0c;功能已经开发完成&#xff0c;需要将test分支合并到main分支&#xff0c;但是不想在合并时候&#xff0c;看…

开源一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款基于若依的wms仓库管理系统&#xff0c;支持lodop和网页打印入库单、出库单的源码。 前言 在当今快速发展的商业环境中&#xff0c;库存管理对于企业来说至关重要。然而&#xff0c;许多企业仍然依赖于传统的、手动…

【Rust】环境搭建

▒ 目录 ▒ &#x1f6eb; 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain&#xff08;rustup、VS&#xff09;重启配置生效设置安装插件 &#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 重装系统&#xff0c;记录下环境搭建遇到的问题。 1️⃣ …

安装Ubuntu系统

打开vmware&#xff0c;新建一个Ubuntu虚拟机&#xff0c;点击自定义&#xff0c;进入下一步 &#xff0c;选择Workstation 17.x后&#xff0c;点击下一步 选择稍后安装系统选项&#xff0c;进入选择客户机操作系统页面&#xff0c;客户机操作系统选择Linux&#xff0c;版本选…

rom定制系列------红米note8_miui14安卓13定制修改固件 带面具root权限 刷写以及界面预览

&#x1f49d;&#x1f49d;&#x1f49d;红米note8机型代码&#xff1a;ginkgo。高通芯片。此固件官方最终版为稳定版12.5.5安卓11的版本。目前很多工作室需要高安卓版本的固件来适应他们的软件。并且需要root权限。根据客户要求。修改固件为完全root。并且修改为可批量刷写的…

电脑仅一个C盘如何重装系统?超简单教程分享!

当我们的电脑仅配备一个C盘时&#xff0c;重装系统的过程可能会显得尤为棘手。因为一旦格式化硬盘&#xff0c;安装系统的分区也可能被一并清除&#xff0c;导致安装过程中断。这时候我们完全可以通过对电脑进行分区来解决这一问题。分区不仅能够帮助我们更好地管理硬盘空间&am…

提升网站速度与性能优化的有效策略与实践

内容概要 在数字化快速发展的今天&#xff0c;网站速度与性能优化显得尤为重要&#xff0c;它直接影响用户的浏览体验。用户在访问网站时&#xff0c;往往希望能够迅速获取信息&#xff0c;若加载时间过长&#xff0c;轻易可能导致他们转向其他更为流畅的网站。因此&#xff0…