
餐馆申请时候通过填写的地址取得经纬度存入数据库,下面是查询某个经纬度附近500米的
$user_lat='41.749034'//传过来的纬度
$user_lng='123.46017'//传过来的经度
$store_mod=db("store")//数据库
$storelist=$store_mod->query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索条件如 state=1】 distance<【周围距离多少米 如
500】 ORDER BY distance ASC")
var_dump($storelist)
【】sql语句中括号的store_latitude,store_longitude为你数据库存的商家经纬度的字段名,其余的为注释
一种办法是每一层级执行一次查询; 另一种办法是增加一个parentidList字段,存储所有父级id如:(1,null,null)(2,1,1)(3,2,[1,2]),利用层级深度level增补空格即可实现目录树建议你看下MongoDB数据库。
MongoDB提供了一种GEO数据类型,专门处理地理位置坐标的,跟你这个应用场景极其吻合。
另外你的坐标数量是海量的,用MySQL很难抗的住。
MySQL到千万级的数据量就很吃力了。
两种方式不同点在于前者把数据作为文件上传,后者是把NSData作参POST上传,觉得作为客户端,其实工作量都差不多,关键是后台了,另外,文件上传的好处就是能知道上传进度,后者的乱码,我不知道你怎么传的,反正base64编码后再上传是没问题的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)