现在有一个LBS项目,已知自己当前的经纬度,数据库里也有很多经纬度的数据。
   我想查处,在我附近3000米的数据有哪些,应该根据什么条件去查。
   我也是刚接触没有思路,麻烦大家给看看   多谢。

解决方案 »

  1.   

    这个3000米要算一个球面距离,网上有很多通过两个地点的经纬度求距离的公式,但是数据库执行公式还是比较慢的,所以我觉得首先去数据库把以这个中心点的一个正方形的所有经纬度选出来,当然,首先你需要算出这个经纬度最北,最南,最东,最西四个点,然后选出经度<最东 and 经度>最西 and 纬度>最南 and 纬度<最北,这样一个类正方形的区域就出来了,然后通过筛选出的经纬度挨个跟当前位置做运算,大于3000米的删掉,最后得到的就是在3000米范围内的了,我这有个两个地点间经纬度转换距离的公式:+ (double)getDistance:(double)lat1:(double)lng1:(double)lat2:(double)lng2 {
        
        int EARTH_RADIUS = 6378137; // m
        
        lat1 *= M_PI / 180;
        lat2 *= M_PI / 180;
        
        double a = lat1 - lat2;
        
        double b = (lng1 * M_PI / 180) - (lng2 * M_PI / 180);
        
        double v = 2 * asin ( sqrt ( pow ( sin ( a / 2 ), 2 ) + cos ( lat1 ) * cos ( lat2 ) * pow ( sin ( b / 2 ), 2 ) ) );
        
        return v * EARTH_RADIUS;
        
    }
      

  2.   

    iPhone开发秘籍(中文第2版) pdf,赶快下吧,不要分,不可多得的好书.地址:http://download.csdn.net/detail/wangxiangdong_sl/3621404