码迷,mamicode.com
首页 > 其他好文 > 详细

写一个思想记录,以免忘记,关于nearby

时间:2014-09-29 02:58:27      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:os   ar   for   数据   sp   c   代码   amp   ad   

获取数据 get_post -> pageindex / pagesize / times

 

$base_offset = 0.0006; //最小基准范围
$times = 0; //最小扩大范围倍数
pic_cou = 0; //照片数量

//从最小范围开始,慢慢扩大范围,直到照片数量够取为止,
while(pic_cou < pageindex*pagesize)
{
$times ++; //增加范围
$now_offset = &times * $base_offset;
$pic_cou = $query->count( dblat < lat + $now_offset && dblng < lng + $now_offset && dblat >lat - $now_offset && dblng > lng - $now_offset );
}

//取出照片
$pic_arr = $query->get( dblat < lat + $now_offset && dblng < lng + $now_offset && dblat >lat - $now_offset && dblng > lng - $now_offset );
//循环获取距离
foreach($pic_arr as $key => $val)
{
$picture = $this->get_app_home_picture_data_new($val); //将数据转换成所需的字段
$distance = $this->getDistanceBetweenPointsNew($val[‘addressy‘] , $val[‘addressx‘] , $lat, $lng);//计算距离
$picture[‘meter‘] = $distance[‘meters‘]; //存入返回数据的所需字段
$data[] = $picture; //合并数据,改数据为目标数据
}

$data=array_sort($data,‘meter‘); // 排序
$arr = array_slice($arr,0,10); // 取出所需个数

 

第一版 思想 -------- 给定一个坐标位置,从最小范围(如100米)开始往外扩大范围,直到查询出来的数量与客户端请求数量匹配为止。每次轮询的查询结果不记录下来,只查询数量,数量足够再同意往数据库请求数据。
第二版 思想 -------- 增加缓存,每次轮询直接查询数据,然后判断数量是否足够,若不够则继续取。注意,每取一次都会计算距离,并将数据集记录合并,最后将其缓存或存入数据库,以便下次请求时不需要再重复计算。

 

 

 

 

 

写的乱七八糟的,过几天赶紧把代码敲出来试试看

写一个思想记录,以免忘记,关于nearby

标签:os   ar   for   数据   sp   c   代码   amp   ad   

原文地址:http://www.cnblogs.com/hanyingchun/p/3999282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!