现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等类似的功能,那这样的功能是怎么实现的呢?本文提供了基于MySQL的实现方式,同样适用于其它数据库。

实现过程主要分为四步:
1. 数据存储
数据库中存储商家对应所在地的坐标值。

2. 定位
请求服务器,访问数据列表,此时还没有拿到手机定位坐标值,直到列表数据页面加载完成,根据地图Api获得手机定位坐标值。这一步需要将坐标值追加到现数据列表的url地址,进行重载页面。

3. 公式计算
进行mysql数据查询的距离计算:

"select *,(2 * 6378.137* ASIN(SQRT(POW(SIN(3.1415926535898*(".$lat."-lat)/360),2)+COS(3.1415926535898*".$lat."/180)* COS(lat * 3.1415926535898/180)*POW(SIN(3.1415926535898*(".$lng."-lng)/360),2))))*1000 as distance from `tp_company` order by distance asc";

其中$lat, $lng 是第二步获得到的当前手机坐标值。lat , lng 是数据库表中对应的坐标值。

4. 分页
分页处理。

 

One Comment

  1. I in addition to my pals were checking out the nice items located on the blog and then before long I got an awful suspicion I had not thanked the web blog owner for those techniques. My boys had been so happy to learn them and have now clearly been loving them. We appreciate you indeed being very acotmmcdaoing as well as for utilizing some terrific things millions of individuals are really eager to learn about. My personal honest regret for not expressing gratitude to you earlier.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*