mysql定位距离计算,sql语句就能解决

使用场景
项目中,经常遇到定位问题,
	例如,距离我最近的门店!
		我到两家店距离分别是多少?
想必大家偶尔会遇到!那么如何简单高效的解决呢,请看接下来的表演!
解决方案
可能有人使用圆周率,我早就忘了,所以我决定使用坐标和三角函数,初中学的知识,终于能用上啦
思路
使用坐标的原因有两个,
	1它可以模拟经纬度,其实经纬度就是坐标点
	2他可以确定,在与x轴或y轴平行的两点间的距离
使用三角形的原因
	直角三角形,知道两条直角边,可计算出斜边的长度
综合
	我就不说了,看图也能知道,c就是我们两点间的距离,
	设一个是定位点,一个是目标点,c就是两点间的距离,
	刚好由于坐标的作用,a和b两条边的长度会加减法就能算出来,
	再使用三角函数就能算出c边的长度啦!

在这里插入图片描述
计算公式我就用这张图,勉强看下吧,反正最后是套用最后的公式!
在这里插入图片描述

开始表演

– 场景
真实业务场景,我位置在中冶祥腾购物商场,我距离南翔地铁站,与南翔家乐福,距离分别是多少
在这里插入图片描述

31.2971446391,121.3234376907 -- 南翔地铁站
31.2989781465,121.3255405426 -- 南翔家乐福
31.2955677941,121.3221502304 -- 当前位置(中冶祥腾购物)

– 表
CREATE TABLE store (
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(10) DEFAULT NULL,
longitude double DEFAULT NULL,
latitude double DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

– 数据
在这里插入图片描述

– 查询
– 按照三角函数公式

SELECT id,`name`,CEILING(SQRT(((longitude-31.2955677941)*(longitude-31.2955677941))+((latitude-121.3221502304)*(latitude-121.3221502304)))*100000) AS 距离我__m FROM store;

– 使用mysql平方函数,开根号函数
– 公式:

SELECT id,`name`,CEILING(SQRT(POWER(存入的经度-输入的经度,2)+POWER(存入的维度-输入的维度,2))*100000) 距离我__m FROM c_store;

– 测试公式:

SELECT id,`name`,CEILING(SQRT(POWER(longitude-31.2955677941,2)+POWER(latitude-121.3221502304,2))*100000) AS 距离我__m FROM store;

– 测试结果: 明显我距离地铁站比较近,距离家乐福比较远,测试正确,距离差不多
在这里插入图片描述

结束!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值