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 计算地址经纬度距离实时位置的更多相关文章
- php mysql 根据经纬度计算距离和排序
#.两点距离(1.4142135623730951) ,),point(,)); ORDER BY distance; mysql 5.6 添加 #.两点球面距离(.0357231545m) ,),p ...
- windows phone 7 定位(获取经纬度),然后找到经纬度所在的位置(城市信息)
原文:windows phone 7 定位(获取经纬度),然后找到经纬度所在的位置(城市信息) 前几天做项目用到, 代码贴给大家. /// <summary> /// 获取当前位置的经纬度 ...
- MySQL 到 ES 数据实时同步技术架构
MySQL 到 ES 数据实时同步技术架构 我们已经讨论了数据去规范化的几种实现方式.MySQL 到 ES 数据同步本质上是数据去规范化多种实现方式中的一种,即通过"数据迁移同步" ...
- centos mysql 数据存储目录安装位置
rpm -ql mysql查看安装位置 MYSQL默认的数据文件存储目录为/var/lib/mysql.假如要把目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 c ...
- JAVA 计算地球上任意两点(经纬度)距离
/** * 计算地球上任意两点(经纬度)距离 * * @param long1 * 第一点经度 * @param lat1 * 第一点纬度 * @param long2 * 第二点经度 * @para ...
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...
- Mysql基本命令及数据库存储位置
连接数据库: sudo mysql -p+密码 例如:sudo mysql -p123456 1.显示数据库列表. show databases; 2.显示库中的数据表: use mysql: //打 ...
- 利用Flume将MySQL表数据准实时抽取到HDFS
转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...
- 通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double ...
随机推荐
- 什么是 FutureTask?使用 ExecutorService 启动任务?
在 Java 并发程序中 FutureTask 表示一个可以取消的异步运算.它有启动和取消 运算.查询运算是否完成和取回运算结果等方法.只有当运算完成的时候结果才 能取回,如果运算尚未完成 get 方 ...
- short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型.而short s1 = 1; s1 += 1;可 ...
- 作为 务注册中心,Eureka比Zookeeper好在哪里?
(1)Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 . (2)Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eure ...
- H5活动全屏滚动页面在安卓智能电视TV调试
前段时间公司做一个线上活动,在电视上商品促销.产品的要求是每个商品介绍刚好满一屏,按下遥控器向下键可以整屏切换.这种功能如果实在PC端,实现起来非常容易,引用jQuery插件就能实现.但是在安卓智能电 ...
- TypeScript中变量调用时后缀感叹号和问号的区别
typescript编译时,当我们开启严格模式时,下面的代码就会报错: function doSomething(x: string | null) { console.log("Hello ...
- CCF201512-2消除类游戏
问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消 ...
- mysql数据乱码
更改数据库安装时的字符编码.打开mysql安装目录,找到my.ini文件,通过使用记事本的方式打开,将这里面的default-character-set=latin1修改成gbk,注意这里面有两处需要 ...
- echarts中饼图的legend自定义icon图片(扇形为例)
效果图: 代码: 问题:// icon: "pin", // 这个字段控制形状 类型包括 circle,rect ,roundRect,triangle,diamond,pin,a ...
- ubuntu修复找不到sudo命令
1.首先,您需要安装该sudo命令.你可以使用 apt 包管理器来做到这一点.您需要以有权安装软件包的用户身份运行此命令,例如root: apt-get install sudo 2.下一步是为您自己 ...
- 制作java的docker镜像
Dockerfile如下: FROM ubuntu:16.04 MAINTAINER tanyiqu ADD jdk-8u231-linux-x64.tar.gz /usr/local/ ENV JA ...