繁体   English   中英

从用户位置查找数组中最接近的经度和纬度-Android Studio

[英]Find closest longitude and latitude in array from user location - Android Studio

以下代码对我最近完成的iOS应用程序很重要:

var closestLocation: CLLocation?
var smallestDistance: CLLocationDistance?

for location in locations {
  let distance = currentLocation.distanceFromLocation(location)
  if smallestDistance == nil || distance < smallestDistance {
    closestLocation = location
    smallestDistance = distance
  }
}

我的问题很简单: 这段代码在Java for Android Studio中的外观如何?

这是我第一次在Java和Android Studio上运行,因此将不胜感激。

Location closestLocation = null;
float smallestDistance = -1;

for(Location location:mLocationsList){
float distance  = currentLocation.distanceTo(location);
 if(smallestDistance == -1 || distance < smallestDistance) {
    closestLocation = location
    smallestDistance = distance
  }
}

使用mLocationsList是位置对象的可迭代集合,并且已经设置了currentLocation

您应该考虑使用Location类。 它用于存储纬度和经度中的位置。 它还具有用于计算点之间的距离的预定义功能distanceBetween()

Location closestLocation;
int smallestDistance = -1;

假设位置是ArrayList<Location>()

for(Location location : locations){
    int distance = Location.distanceBetween(closestLocation.getLatitude(),
                           closestLocation.getLongitude(),
                           location.getLatitude(),
                           location.getLongitude());
    if(smallestDistance == -1 || distance < smallestDistance){
        closestLocation = location;
        smallestDistance = distance;
    }
}

看起来像这样(位置必须可迭代,并且必须设置userLocation):

    Location closest;
    float smallestDistance = Float.MAX_VALUE;
    for (Location l : locations) {
        float dist = l.distanceTo(userLocation);
        if (dist < smallestDistance) {
            closest = l;
            smallestDistance = dist;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM