import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.plugin.activerecord.Record;
import com.xiaheng.annotation.RouteViewPath;
import com.xiaheng.core.jfinal.BaseController;
import java.util.Map;
double lat = Double.valueOf(la);
String ln = getPara("lng", "");
double lng = Double.valueOf(ln);
Outlet model = new Outlet();
String address =re.get("address");
Map<String, String> json = df.getGeocoderLatitude(address);
String lng2 = json.get("lng");
double lng1 = Double.valueOf(lng2);
String lat2 = json.get("lat");
double lat1 = Double.valueOf(lat2);
double distance = df.getDistance(lng,lat,lng1,lat1);
re.set("distance", distance);
/*
* 返回负数表示:p1 小于p2,
* 返回0 表示:p1和p2相等,
* 返回正数表示:p1大于p2
*/
public int compare(Record p1, Record p2) {
//按照距离进行升序排列
if(p1.getDouble("distance") > p2.getDouble("distance")){
return 1;
}
if(p1.getDouble("distance") == p2.getDouble("distance")){
return 0;
}
return -1;
}
});
import java.util.Comparator;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.plugin.activerecord.Record;
import com.xiaheng.annotation.RouteViewPath;
import com.xiaheng.core.jfinal.BaseController;
import java.util.Map;
public void serviceOut(){
//接收前端传参并转换成double类型
String la = getPara("lat", "");double lat = Double.valueOf(la);
String ln = getPara("lng", "");
double lng = Double.valueOf(ln);
Outlet model = new Outlet();
List<Record> result = model.getList(new JSONObject());
//循环解析列表里面的地址并计算距离
for(Record re : result){String address =re.get("address");
Map<String, String> json = df.getGeocoderLatitude(address);
String lng2 = json.get("lng");
double lng1 = Double.valueOf(lng2);
String lat2 = json.get("lat");
double lat1 = Double.valueOf(lat2);
double distance = df.getDistance(lng,lat,lng1,lat1);
re.set("distance", distance);
}
//按照距离排序
Collections.sort(result, new Comparator<Record>(){/*
* 返回负数表示:p1 小于p2,
* 返回0 表示:p1和p2相等,
* 返回正数表示:p1大于p2
*/
public int compare(Record p1, Record p2) {
//按照距离进行升序排列
if(p1.getDouble("distance") > p2.getDouble("distance")){
return 1;
}
if(p1.getDouble("distance") == p2.getDouble("distance")){
return 0;
}
return -1;
}
});