很抱歉没有提供任何示例代码,因为我不知道如何执行此操作。
我正在编写一个使用Firebase作为后端的Android应用程序。 我正在使用fusedlocationapi将当前当前用户位置存储到mysl db。
现在,当用户登录应用程序时,他/她可以选择仅显示半径为25km的用户列表(我们假设为例)。任何人都可以指导我这个功能。
我不想在客户端这样做...有没有办法让它使用mysql
答案 0 :(得分:0)
您可以使用 Google Maps Android API实用程序库
public class DistanceHelper {
private static final Double RADIUS = 25000.0;
public static double getDistance(LatLng user1, LatLng user2){
double distance = SphericalUtil.computeDistanceBetween(user1, user2);
return distance;
}
public static Double getRadius(){
return RADIUS;
}
public static String formatNumber(double distance) {
String unit = "m";
if (distance < 1) {
distance *= 1000;
unit = "mm";
} else if (distance > 1000) {
distance /= 1000;
unit = "km";
}
return String.format("%4.3f%s", distance, unit);
}
}
LatLng user1 = new LatLng(currentUser.getLatitude(), currentUser.getLongitude());
LatLng user2 = new LatLng(otherUser.getLatitude(), otherUser.getLongitude());
Double distance = DistanceHelper.getDistance(user1, user2);
if (distance <= DistanceHelper.getRadius()) {
//code here
}
我存储用户&#39;使用GPS和LocationManager在FB数据库中的纬度和经度。将计算放在ChildEventListener中以检索半径25km内的获取用户。
但是我觉得这个实现是错误的,因为计算是在客户端完成的,所以如果你有数百万或者十亿的用户,那么你必须在客户端的设备上逐个计算,这可能会导致性能非常低你的应用程序。