5

Google pLaces api を使用してアプリを開発しています。アプリを使用しているユーザーの近くにあるカフェのリストを取得できます。結果のリストには、場所の名前、住所、緯度経度の値、電話番号などの場所の詳細が含まれます。私が知りたいのは、ユーザーと結果リストの各エントリとの間の距離を返すように場所 API を要求する方法です。同様のトピックについて議論するstackoverflowに投稿されたいくつかのリンクを調べました。Google のドキュメントも参照しましたが、これらの距離の取得については何も言及されていません。大円アルゴリズムのような数式を使用することは控えたいと思います。その場合、返される距離は直線距離になり、距離の正確な推定値にはなりません。

私が行ったリンクのいくつかは次のとおり です。Googleマップを埋め込まずに、GeolocationまたはSimilar APIを使用して、ある場所から別の場所までの距離を見つけるにはどうすればよいですか?

Google Places APIを使用してAndroidでキロメートル単位の距離を見つける

Androidで距離キロを取得するには?

4

5 に答える 5

4

あなたが言ったように私は思う-あなたは自分自身を使用することを控えたい

あなたができるように任意の数式これも試してみてください-

場所の住所から距離を取得できます

http://maps.googleapis.com/maps/api/distancematrix/xml?origins="+a+"&destinations="+b+"&mode=driving&language=en-EN&sensor=false with a=addressFrom, b=addressTo

緯度と経度の場所がある場合は、その場所の住所を次のように取得できます。

 double latiTude = 10.3929393;
 double longiTude = 150.93984884;

 Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
  GeoPoint p= new GeoPoint((int) (latiTude * 1E6), (int) (longiTude * 1E6));
  List<Address> address = geocoder.getFromLocation(
                                                    p.getLatitudeE6() / 1E6,
                                                    p.getLongitudeE6() / 1E6, 1);
    if (address.size() > 0) 
    {
    String addressFroLatLong= "";
    for (int i = 0; i < address.get(0).getMaxAddressLineIndex(); i++) 
    {   addressFroLatLong+= address.get(0).getAddressLine(i) + "\n";
    }   
   }

助けられたら賛成票を投じてください。他には何もありません。ありがとう、お楽しみいただければ幸いです。

于 2013-02-10T17:05:57.333 に答える
3

Haversine の実装を以下に示します。ただし、2点間の正確な距離を見つけるのに役立つGoogle Places APIが提供するサービスが必要だとまだ感じています。誰かがそれを知っているなら、私に知らせてください..今のところ、Haversineは良い代替品です..

import java.lang.*;
import java.io.*;
import java.math.*;
public class DistanceCalculation {

public static void main(String[] args)
{
    double lon11 =-97.116121;
      double lat11=32.734642;

      double lon22=-97.111658;
      double lat22=32.731918;

    //   calculateDistance(lat11,lon11, lat22, lon22);
      distFrom(lat11, lon11, lat22, lon22);

}
public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double sindLat = Math.sin(dLat / 2);
    double sindLng = Math.sin(dLng / 2);
    double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
            * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;
    System.out.println(dist);
    return dist;
    }
}
于 2013-02-11T02:08:39.083 に答える
0

2点間の距離は、次の式を使用して求めることができます。http ://williams.best.vwh.net/avform.htm#覚えておいてください。度ではなくラジアンを使用してください。

各リリースでマップキーを更新することに懸念があるようですか?私は市場にマップベースのアプリを持っており、1つのprodキーと1つのdebugキーを取得します(開発者ごとだと思いますが、そうでない場合はアプリごとです)。それはあなたがあなたのapkに署名するために使用するキーと関係があります。私が言っているのは、prod apiキーを取得し、この1つのアプリのみを開発した場合、キーに再度触れることなく、多くの更新を公開できるということです(ローカルでデバッグキーのテストを行わない場合)。 。気になる場合は、AndroidManifext.xmlファイルに両方を保持し、デバイスにデプロイするかエミュレーターにデプロイするかに応じて、無関係なファイルをコメントアウトすることができます。

于 2013-02-10T17:03:27.320 に答える
-1

2 つの地理的位置の間の計算は、特にタスクの場合、近くのホテルまでの距離を見つけることは難しくありません。

タスクに完全に適した hasersine 式を使用できます。

しかし、これらの地理的な数式は、経路指定サービスが必要な道路の距離ではなく、空気の距離を示します。

于 2013-02-10T17:10:57.287 に答える
-2

別の解決策:これを行うこともできます:

//your two locations
Location locationA;
Location locationB;

//distance between them
float distanceBetweenPoints = locationA.distanceTo(locationB);

少し遅いですが、うまくいけばこれが役立つでしょう:)

于 2013-02-10T17:04:32.797 に答える