2016-09-24 15 views
-1

私は緯度/経線の値を持つお客様の場所のArraylistを持っています。私は私の場所から最も近い顧客から旅行し、その後、最も近い顧客を基にして進む必要があります。ジオポイントに基づいてジオポイントの配列をソートする方法は?アンドロイドマップで最も近い距離に基づいてジオポイントのarraylistをソートする方法は?

+0

これまでに試したことはありますか? – Nikhil

+0

ここを参照してください.https://developers.google.com/maps/articles/phpsqlsearch_v3?csw = 1 –

答えて

0

以下のコードスニペットからJavaコンパレータを作成し、それを使ってArrayListをソートします。あなたはすべての地理ポイントにあなたの場所の間の距離を計算する必要がある2つの地理位置

private double distanceBetween(final GeoLocation from, final GeoLocation to) { 
    // double earthRadius = 3958.75; // in miles, change to 6371 for 
    // kilometer output 
    final double earthRadius = 6371; 

    final double dLat = Math.toRadians(to.lattitude - from.lattitude); 
    final double dLng = Math.toRadians(to.longitude - from.longitude); 

    final double sindLat = Math.sin(dLat/2); 
    final double sindLng = Math.sin(dLng/2); 

    final double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2) * Math.cos(Math.toRadians(from.lattitude)) 
     * Math.cos(Math.toRadians(to.lattitude)); 

    final double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 

    final double dist = earthRadius * c; 
    return dist; 
} 
0

の間の距離を取得する

サンプルコード。

Location.distanceTo() APIを使用すると、以下のように距離を計算できます。

Location loc1 = new Location(""); 
loc1.setLatitude(lat1); 
loc1.setLongitude(lon1); 

Location loc2 = new Location(""); 
loc2.setLatitude(lat2); 
loc2.setLongitude(lon2); 

float distanceInMeters = loc1.distanceTo(loc2); 

次にすべてを距離で並べ替えます。

0

GoogleのDistance Matrix APIを目的に使用します。

ループ内には、転送モードに基づいてDistance Matrix APIを使用して、到達距離と到達時間を取得します。

期間に基づいて、並べ替え手法を使用して配列リストをソートします。

あなたが飛んでいる場合、2つのlatとlongの間の距離を見つけることは直接動作します。

関連する問題