簡體   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