gpt4 book ai didi

与位置比较时的 Java : Format the distances properly,

转载 作者:行者123 更新时间:2023-12-01 18:09:39 24 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,其服务器端是用 Java 编写的。当我收到用户的坐标时,我正在检索餐馆列表,我正在计算距用户的距离,并以升序方式对它们进行排序。

现在,一切正常。唯一的问题是计算的距离具有非常高的灵敏度。我正在寻找的是,以这种方式显示的距离,即 1.2km、200m、12.2km 等,它正在计算并适本地附加公里或米。我怎样才能实现这个目标?

当前输出是:

Restaurant distance is 6026.203669933703
Restaurant distance is 1.0248447083638768
Restaurant distance is 1.0248447083638768
Restaurant distance is 1.0248447083638768

计算和排序代码:

 @Override
public List<Restaurant> getNearbyRestaurants(double longitude, double latitude) {

final int R = 6371; // Radius of the earth
List<Restaurant> restaurantList = this.listRestaurants();
List<Restaurant> nearbyRestaurantList = new ArrayList<>();
for(Restaurant restaurant : restaurantList){
Double latDistance = toRad(latitude-restaurant.getLatitude());
Double lonDistance = toRad(longitude-restaurant.getLongitude());
Double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) +
Math.cos(toRad(latitude)) * Math.cos(toRad(restaurant.getLatitude())) *
Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
Double distance = R * c;
restaurant.setDistanceFromUser(distance);
if(distance < 10){
nearbyRestaurantList.add(restaurant);
}
}
if(!(nearbyRestaurantList.isEmpty())) {

Collections.sort(nearbyRestaurantList, new Comparator<Restaurant>() {
@Override
public int compare(Restaurant o1, Restaurant o2) {
if (o1.getDistanceFromUser() > o2.getDistanceFromUser()) {
return 1;
}
if (o1.getDistanceFromUser() < o2.getDistanceFromUser()) {
return -1;
}
return 0;
}
});


for(Restaurant restaurant : restaurantList){
System.out.println("Restaurant distance is "+restaurant.getDistanceFromUser());
}
return nearbyRestaurantList;
}
return null;
}

请让我知道我错过了什么。多谢。 :-)

最佳答案

如果距离低于 1000m,则根据应用程序使用积分米的精确值,或四舍五入到下一个 10 米:

473.343 -> 470m 或 473,具体取决于您的应用目标

如果距离大于 1 公里但小于 100 公里,则使用小数点后一位数字:

1.5公里、10.3公里、99.5公里

如果超过 100 公里,四舍五入为整数公里:101公里,9453公里

关于与位置比较时的 Java : Format the distances properly,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com