Fabric APIを使用してアプリを見つけ出しています。収集されたツイートをユーザーの現在地に基づいて並べ替えるオプションがあります。コンパレータを使用してソートするには、以下の方法でオンラインを見つけました。しかし、これはうまくいかないようで、前のソート結果と後のソート結果はまったく同じです。TwitterファブリックAPI:位置に基づいてつぶやきをソートする(最寄りのものに近い)
public class SortLocations implements Comparator<Tweet> {
Double currLat;
Double currLng;
public SortLocations(Double currLat1, Double currLng1) {
currLat = currLat1;
currLng = currLng1;
}
@Override
public int compare(final Tweet tweet1, final Tweet tweet2) {
double lat1 = 0, lon1 = 0, lat2 = 0, lon2 = 0, distanceToPlace1 = 0, distanceToPlace2 = 0;
try {
lat1 = tweet1.coordinates.getLatitude();
lon1 = tweet1.coordinates.getLongitude();
lat2 = tweet2.coordinates.getLatitude();
lon2 = tweet2.coordinates.getLongitude();
distanceToPlace1 = distance(currLat, currLng, lat1, lon1);
distanceToPlace2 = distance(currLat, currLng, lat2, lon2);
} catch (Exception E) {
Log.d("No coordinates", "");
}
return (int) (distanceToPlace1 - distanceToPlace2);
}
public double distance(double fromLat, double fromLon, double toLat, double toLon) {
double radius = 6378137; // approximate Earth radius, *in meters*
double deltaLat = toLat - fromLat;
double deltaLon = toLon - fromLon;
double angle = 2 * Math.asin(Math.sqrt(
Math.pow(Math.sin(deltaLat/2), 2) +
Math.cos(fromLat) * Math.cos(toLat) *
Math.pow(Math.sin(deltaLon/2), 2)));
return radius * angle;
}
}
これは、クラスがtweetsSortedByLocationがタイプ一覧である私の活動
Collections.sort(tweetsSortedByLocation, new SortLocations(currLat, currLng));
で使用される方法です。任意のヘルプは本当に感謝しています:)
おかげで、あなたの問題を修正願っています!包括的なソリューションを本当に感謝します。 –