方式一:SQL语句
SQL拼接
StringBuffer sql = new StringBuffer("SELECT b.id, b.jd, b.wd, b.`name`, b.address, b.agree_count, b.flower_count, b.egg_count, b.discuss_count, b.membership_count, b.sale_info, b.pics, ");
sql.append(" round( 6378.138 * 2 * asin( sqrt( pow( sin(( b.wd * pi() / 180 - ");sql.append( wd);
sql.append(" * pi() / 180 ) / 2 ), 2 ) + cos( b.wd * pi() / 180) * cos(");
sql.append( wd);
sql.append(" * pi() / 180) * pow( sin(( b.jd * pi() / 180 -");
sql.append( jd);
sql.append(" * pi() / 180 ) / 2 ), 2 ))) * 1000 ) AS distance");
sql.append(" FROM `business` b");
SQL语句如下:
SELECT b.id, b.jd, b.wd, b.`name`, b.address, b.agree_count, b.flower_count, b.egg_count, b.discuss_count, b.membership_count, b.sale_info, b.pics, round( 6378.138 * 2 * asin( sqrt( pow( sin(( b.wd * pi() / 180 - 30.544969 * pi() / 180 ) / 2 ), 2 ) + cos(b.wd * pi() / 180) * cos(30.544969 * pi() / 180) * pow( sin(( b.jd * pi() / 180 - 104.062414 * pi() / 180 ) / 2 ), 2 ))) * 1000 ) AS distance FROM `business` b WHERE 1 = 1 ORDER BY distance ASC LIMIT 0, 100
方式二:百度定位SDK
(http://developer.baidu.com/map/index.php?title=android-locsdk/guide/key)
LatLng startLocation = new LatLng(currentLatitude, currentLongitude); // 当前位置(起)
LatLng endLocation = new LatLng(Double.parseDouble(sale.wd), Double.parseDouble(sale.jd)); // 目标位置(止)
Double distance = DistanceUtil.getDistance(endLocation, startLocation); // 距离