ある場所と他の場所のリストとの間の距離を計算する際に問題が発生します(最も近い場所を取得するために)。 私はLocation.distanceBetween(...)とlocation.distanceTo(...)を使って試しましたが、2つのメソッドが動作していますが、どちらも私に別のデータを送ります。Android Location.distanceBetweenとLocation.distanceToの違い
私のデータは、HashMapの基本的な拡張機能であり、場所データ(文字列として変換された整数として)と、ここでは必要ない他のものを含んでいます。
private ArrayList<ConcessionDistance> getMapsConcessionsDistancesFromPoint(ArrayList<ConcessionDistance> al, Location currentLocation) {
Location dest;
float distance1,distance2;
float[] curDist = new float[1];
double lati,longi;
Log.i("DBTableConcessions","getMapsConcessionsDistancesFromPoint: Generation d'une map de donnée de concession");
for(ConcessionDistance curConc : al){
//Distance by method 1
dest = new Location(LOCATION_PROVIDER);
lati = new Double((new Integer(curConc.get("concession_latitude"))) /1e6);
longi = new Double((new Integer(curConc.get("concession_longitude"))) /1e6);
dest.setLatitude(lati);
dest.setLongitude(longi);
distance1 = currentLocation.distanceTo(dest);
//Distance by method2
Location.distanceBetween(
currentLocation.getLatitude(),
currentLocation.getLongitude(),
(double) ((new Integer(curConc.get("concession_latitude"))) /1000000),
(double) ((new Integer(curConc.get("concession_longitude"))) /1000000),
curDist);
distance2 = curDist[0];
Log.i("DBTableConcessions","distance :"+distance1+" ou "+distance2);//+" ,lat :"+lati+" ,long "+longi); //+"curDist{0="+curDist[0]+",1="+curDist[1]+",2="+curDist[2]+"}"
//Saving one of the distance
curConc.put("distance",String.valueOf(distance1));
}
return al;
}
どこから問題が発生しているのかわかりますか? 私は変換の問題を考えるが、私はそれを自分で解決する問題では深いによ:(
すべてのヘルプは大歓迎だろう事前によるおかげ
編集:。。ここに私のLogCatの一部です。 :私は「ストラスブール」のエミュレータにGPS位置情報を送信するすべてのそれらの都市へとプロセスの距離(それらは東フランスからの都市がある):
06-29 06:37:37.215: INFO/DBTableConcessions(809): distance from EVRY :346254.66 ou 373061.38
06-29 06:37:37.235: INFO/DBTableConcessions(809): distance from HAGUENAU CEDEX :105491.984 ou 0.0
06-29 06:37:37.235: INFO/DBTableConcessions(809): distance from BESANCON CEDEX :110127.08 ou 134302.03
06-29 06:37:37.265: INFO/DBTableConcessions(809): distance from BREST CEDEX 9 :852829.1 ou 820181.7
06-29 06:37:37.295: INFO/DBTableConcessions(809): distance from HOENHEIM :87783.39 ou 0.0
06-29 06:37:37.326: INFO/DBTableConcessions(809): distance from COLMAR :28067.428 ou 0.0
06-29 06:37:37.355: INFO/DBTableConcessions(809): distance from BELFORT :40919.13 ou 134302.03
06-29 06:37:37.446: INFO/DBTableConcessions(809): distance from SARREBOURG :81606.31 ou 0.0
それらの都市との間(Googleマップによって与えられた)実際の距離"ストラスブール"は:
エブリー:520キロ(法1:ミス175キロ、方法2:ミス145キロ)
アグノー:30キロ
ブザンソン:250キロ(法1:ミス140キロ、方法2(法1:リターン0:70キロ、方法2を追加) :ミス120キロ)
ブレスト:1070キロ(法1:ミス200キロ、方法2:ミス230キロ)
ホエンハイム:5キロ(法1:80キロを追加し、方法2:リターン0)
コルマール:75キロ(法1:ミス50km、方法2:リターン0)
ベルフォール:155キロ(法1:ミス110キロ、方法2:20キロを欠場)
サールブール:75キロ(法1:5キロ、方法2を欠場:リターン0)
だから我々はその第二の方法の戻り値を知ることができます実際の距離が〜100kmを下回っている場合は、方法1の場合、ロジックは表示されません。/
あなたはどんな入力を期待していましたか、あなたが実際に受け取った結果を分かち合いましょうか? – Travis
これを追加するために私の最初の投稿を編集しました –
さらに、MapViewによく表示されるので、問題は私のリストの最初のデータから来ていません... –