gps 坐标距离计算

89 篇文章 0 订阅
52 篇文章 0 订阅

 

1)如果是js状态可以利用地图供应商比如高德,百度的sdk库来计算,需要注册开发者账号,也可以在其他方式下验证。

(https://lbs.amap.com/api/javascript-api/example/calcutation/calculate-distance-between-two-markers)

2)利用地球半径计算。即球体(圆)上2个点的曲线距离。

(https://blog.csdn.net/jianggujin/article/details/72833711)

这个依然是调用第三方高德的接口请求结果。

(https://blog.csdn.net/a_step_further/article/details/54025386)

3.纯粹数据库的计算

mysql(https://blog.csdn.net/jianggujin/article/details/72833711#mysql%E5%AE%9E%E7%8E%B0)

sql server中有关于地理位置的类型,此次传入参数为latitude,longititude格式string。

参考(https://stackoverflow.com/questions/13026675/calculating-distance-between-two-points-latitude-longitude#)

ALTER FUNCTION [dbo].[cal_gps_distance]
( @src AS VARCHAR(100),
  @dst AS VARCHAR(100)
)
RETURNS decimal(20,2)
AS
BEGIN
	-- routine body goes here, e.g.
	-- SELECT 'Navicat for SQL Server'
	
	declare @src_lon varchar(50)
	declare @src_lat varchar(50)
	declare @dst_lon varchar(50)	
	declare @dst_lat varchar(50)	
  DECLARE @src_geo geography;
  DECLARE @dst_geo geography;
  DECLARE @result decimal(20,2);

  set @src_lat=convert(decimal(12,9),substring(@src,0,charindex(',',@src)))
  set @src_lon=convert(decimal(12,9),substring(@src,charindex(',',@src)+1,len(@src)))

  set @dst_lat=convert(decimal(12,9),substring(@dst,0,charindex(',',@dst)))
  set @dst_lon=convert(decimal(12,9),substring(@dst,charindex(',',@dst)+1,len(@dst)))
	
	--return @src_lat
	--,@src_lon;
  set @src_geo= geography::Point(@src_lat, @src_lon, 4326);
  set @dst_geo= geography::Point(@dst_lat, @dst_lon, 4326);

  --set @result=convert(decimal(20,2),@src_geo.STDistance(@dst_geo))
	set @result=CAST(@src_geo.STDistance(@dst_geo) as decimal(20,2)) 
	return @result

END

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值