LBS打车定位系统

代码分享
代码名称: LBS打车定位系统
代码描述: LBS打车定位系统
代码托管地址: -
代码作者: -
代码效果图:
本帖最后由 bbscs123 于 2013-6-22 12:32 编辑

LBS位置服务的SQL实现原理以及SQL代码(包括周边搜索以及位置交友)
一、位置服务(搜索周边商家POI)
1、自身有海量的周边搜索数据,并且一定要有经纬度坐标;(数据来源可以从网上购买,如果要直接从地图API中获取,那是要付费的,而且费用不菲)
2、手机定位后将经纬度发送给服务器,服务器根据经纬度在数据库中匹配数据,并按照距离由近到远排序(此处省略一万字...)

SQL实现经纬度匹配以及距离排序代码
1、SQL计算经纬度距离的自定义函数
CREATE FUNCTION dbo.GetDistance  
(  
    @LatBegin REAL  
    , @LngBegin REAL  
    , @LatEnd REAL  
    , @LngEnd REAL  
)  
RETURNS FLOAT  
AS  
BEGIN  
    DECLARE @distance REAL  
    DECLARE @EARTH_RADIUS REAL  
    SET @EARTH_RADIUS = 6378.137  
      
    DECLARE @RadLatBegin REAL, @RadLatEnd REAL, @RadLatDiff REAL, @RadLngDiff REAL  
    SET @RadLatBegin = @LatBegin * PI() / 180.0  
    SET @RadLatEnd = @LatEnd * PI() / 180.0  
    SET @RadLatDiff = @RadLatBegin - @RadLatEnd  
    SET @RadLngDiff = @LngBegin * PI() / 180.0 - @LngEnd * PI() / 180.0  
      
    SET @Distance = 2 * ASIN(SQRT(POWER(Sin(@RadLatDiff / 2), 2) + COS(@RadLatBegin) * COS(@RadLatEnd) * POWER(SIN(@RadLngDiff/2),2)))  
    SET @Distance = @Distance * @EARTH_RADIUS  
    --SET @Distance = Round(@Distance * 10000) / 10000  
      
    RETURN @Distance * 1000  
END  


2、获取周边数据的存储过程

CREATE PROCEDURE Up_Data_GetPOI 
@lngbegin nvarchar(50), --当前经度
@latbegin nvarchar(50), --当前纬度
@distance int, --搜索半径,单位为米
@WhereStr nvarchar(200) --附加搜索条件,如and 1=2 
AS
declare @SqlStr nvarchar(2000)

set @SqlStr='select *, dbo.GetDistance('+@latbegin+','+@lngbegin+',纬度字段,经度字段) as distance from [存储商家的数据表名] where (纬度字段<>'' and 经度字段<>'') and dbo.GetDistance('+@latbegin+','+@lngbegin+',纬度字段,经度字段)<'+Convert(nvarchar(10),@distance)+' '+@WhereStr+' order by distance asc'

--print @SqlStr
Execute Sp_ExecuteSql @SqlStr
GO

二、位置交友
1、要有会员数据,同样也得有客户端是否在线以及经纬度的字段(不一定要获取到经纬度,默认为空)
2、手机客户端定位后,更新该会员的经纬度坐标以及客户端在线状态
3、通过上面的SQL代码即可实现数据列表,只要输出JSON/XML给手机客户端解析即可

未命名.jpg (4.85 KB, 下载次数: 0)

未命名.jpg

noavatar_middle.gif (18.09 KB, 下载次数: 0)

noavatar_middle.gif

开发必备文档-主流电子地图对比报告.docx

32.29 KB, 下载次数: 17, 下载积分: 下载豆 -2

SQL代码(包括周边搜索以及位置交友).doc

2.16 KB, 下载次数: 23, 下载积分: 下载豆 -2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值