这么利用Mysql计算地址经纬度距离实时位置
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容介绍了"这么利用Mysql计算地址经纬度距离实时位置"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有
千家信息网最后更新 2025年01月18日这么利用Mysql计算地址经纬度距离实时位置
本篇内容介绍了"这么利用Mysql计算地址经纬度距离实时位置"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
前言
最近在做项目时候,遇到一个这样子的需求,
点到卡包里面卡券使用使用,需要展示卡券使用附近门店,
思路
数据库地址表设计
通用的区域街道地址表tz_sys_area
字段名称 | 类型 | 备注 |
---|---|---|
area_id | bigint | 区域ID |
area_name | varchar(32) | 区域名称 |
parent_id | bigint | 所属父区域ID |
level | int | 层级 |
type | char | 区域类型0国家1省份直辖市2地市3区县 |
area_name | varchar(32) | 区域名称 |
parent_id | bigint | 所属父区域ID |
level | int | 层级 |
后台也可以做修改
四级区域地址数据来源我在网上找的json文件然后按照格式倒入到的数据库
门店地址表tz_address
需求实现
这里计算距离就需要用到经纬度
需要使用高德地图api接口地理/逆地理编码获取地址经纬度并保存
/** * 地理/逆地理编码 * https://lbs.amap.com/api/webservice/guide/api/georegeo * * @return */ public String addressToLongitude(String address) { String longitude = ""; String urlString = "?key={key}&address={address}&output=JSON"; String response = restTemplate.getForObject(ApiAction.API_GEOREGO_TEST + urlString, String.class, apiKey, address); if (StrUtil.isEmpty(response)) { return null; } JSONObject jsonObject = JSON.parseObject(response); String code = jsonObject.getString("infocode"); if (code.equals("10000")) { JSONArray jsonArray = jsonObject.getJSONArray("geocodes"); JSONObject jsonObject1 = (JSONObject) jsonArray.get(0); longitude = jsonObject1.get("location").toString(); } else { return null; } return longitude; }
使用
private Address setlngAndLat(Address address) { String addr = address.getProvince() + address.getCity() + address.getArea() + address.getAddr(); String longitude = gaoDeService.addressToLongitude(addr); if (StrUtil.isBlank(longitude)) { throw new BusinessException("地址经纬度识别识别"); } String lat = longitude.split(",")[1]; String lng = longitude.split(",")[0]; address.setLat(lat); address.setLng(lng); return address; }
MySQL根据经纬度计算地址距离当前位置
SELECT ( 6371 * acos( cos(radians(#{lat})) * cos(radians(lat)) * cos(radians(lng) - radians(#{lng})) + sin(radians(#{lat})) * sin(radians(lat)) ) ) AS distance FROM tz_user_addr where addr_id=#{storeAddrId}
"这么利用Mysql计算地址经纬度距离实时位置"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
地址
区域
经纬
经纬度
地理
位置
名称
数据
实时
内容
层级
所属
数据库
更多
知识
类型
编码
门店
需求
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器被植入后门如何防护
联想rd350服务器管理软件
焦作71426部队网络技术
国际贸易出口技术复杂度数据库
南川区工商软件开发流程要求
java软件开发和程序员
gartner关于网络安全培训
我的世界服务器命令方块怎么打开
北京中宏信息网络技术
医药市场数据库
宝塔数手动备份数据库
网络安全工作难点
数据库一致性要求
sql数据库访问权限
杭州巨聚网络技术有限
如何修改华为H22H服务器网址
吉林新一代软件开发服务价格优惠
软件开发工具阶段
物理服务器管理口标识
饥荒专用服务器启动失败
软件开发步骤PPT
王者荣耀每个服务器大概有多少人
德州康顺网络技术
阿里云服务器违规
软件开发非洲
学习网络安全工程师有用吗
株洲网络安全检查行动
3 网络技术应用情况
软件开发的配置项都要有基线嘛
网络安全可视化综述