根据经纬度(lat,lng)查找附近的地点(续)

来源:互联网 发布:爱淘宝api 编辑:程序博客网 时间:2024/05/01 01:40
原文出处:http://blog.163.com/ezy_dk/blog/static/166651492201221445753585/

参考网文:附近地点搜索初探  

下面给出自己总结的SQL代码
declare @EARTH_RADIUS floatset @EARTH_RADIUS = 6371000.00 --地球的半径declare @lat floatdeclare @lng floatdeclare @dlng floatdeclare @dlat floatdeclare @distance int--距离set @distance = 300--300米set @lat =xx.xxxxx--这个是中心地点set @lng = xxx.xxxx--中心地点set @dlng  = 2 * asin(sin( @distance / (2 * @EARTH_RADIUS)) / cos(@lat))set @dlng = degrees(@dlng) set @dlat =  300/@EARTH_RADIUSset @dlat = degrees(@dlat) declare @lng1 floatdeclare @lng2 floatdeclare @lat1 floatdeclare @lat2  floatset @lat1 = @lat-@dlat-- 西经set @lat2 = @lat+@dlat-- 东经set @lng1 = @lng-@dlng-- 南纬set @lng2 = @lng+@dlng-- 北纬 select @lat1,@lat2,@lng1,@lng2SELECT lat,lng FROM place WHERE (lat > @lat1 AND lat < @lat2)-- 经度范围AND (lng > @lng1 AND lng < @lng2)-- 纬度范围
常识:
1、经度(Latitude), 东经为正数,西经为负数;
2、纬度(Longitude), 北纬为正数,南纬为负数; 
附图:

0 0