緯度と経度を使用して、最も近いイベント(場所)距離をkmで表示しているアプリがあります。ユーザーの緯度と経度は可変ですが、イベントの緯度と経度は固定されています。ただし、正しい距離はkmです。たとえば、正しい距離はGoogleマップで6.7 kmですが、その表示は8663.90 kmです。私はアンドロイドの初心者ですので、解決策を得ることができません。どんな助けも素晴らしいでしょう!私のコードは緯度と経度を使用して距離が正しく表示されない
{ double doubleInstance = d.getDistance(Lat1, Lon1, d.getLatitude(), d.getLongitude(), "N");
String dInstance = String.format("%.2f",doubleInstance);
lblview1.setText(" " + String.valueOf(dInstance) + " Km"); }
と
{ public double getDistance(double lat1, double lon1, double lat2, double lon2, String unit) {
int Radius = 6371;// radius of earth in Km
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2)
+ Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.sin(dLon/2)
* Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult = Radius * c;
double km = valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
int kmInDec = Integer.valueOf(newFormat.format(km));
double meter = valueResult % 1000;
int meterInDec = Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value", "" + valueResult + " KM " + kmInDec
+ " Meter " + meterInDec);
return Radius * c;
} }
頑張りすぎないでください - いくつかのビルトインメソッドを使用 - https://developer.android.com/reference/android/location/Location.html#distanceBetween(double,%20double,%20double、 %20double、%20float []) – TDG
@TDGあなたはコードで私を助けてくださいできますか? – Ankit