0

データベースに場所のリストがあり、すべて緯度/経度があります。

私のアプリでは、ユーザーの場所を取得し、彼から 100 メートル離れたすべての場所を取得したいと考えています。

そのために、彼の緯度と経度に 100 メートル足します。

私はこのようなことをしようとしました:

    double radius = 100; // 100 meters

    double limitLatitudeNorth = latitude + radius;
    double limitLatitudeSouth = latitude - radius;

    double limitLongitudeWest = longitude - radius;
    double limitLongitudeEast = longitude + radius;

    StringBuffer query = "latitude < '" + limitLatitudeNorth + "' AND latitude > '" + limitLatitudeSouth + "' AND longitude < '" + limitLongitudeWest + "' AND longitude > '" + limitLongitudeEast + "'";

しかし、もちろん緯度と経度はメートル単位ではないので、合計をどうやって求めるかはわかりません。

式は何ですか?地球上の位置によると聞きました。私がフランスにいるとしましょう。

多くのアプリがそれを行っています (例: LINE) そのためのコードを簡単に見つけられると思っていましたが、見つけられませんでした: (

何か案が?

4

2 に答える 2

0

Location クラス内でdistanceToメソッドを使用できます。以下をせよ:

Location location = new Location();
location.setLatitude(latitude);
location.setLongitude(longitude);

Location locationFromDB = new Location();
locationFromDB.setLatitude(latitudeFromDB);
locationFromDB.setLongitude(longitudeFromDB);

float dist = location.distanceTo(locationFromDB);
if(dist<100f){
     //do here your magic
}
于 2013-10-21T11:18:11.673 に答える
0

緯度での距離 (極を通る大円をたどる) の場合、弧の 1 分 = 1 海里 = 1852 メートル (概算)。したがって、1 度 = 111.12 km

経度の変化については、この係数に緯度の余弦を掛ける必要があります。したがって、赤道での距離の変化は緯度の変化と同じであり、極 (cos 90 度 = 0) では、同じ経度の線はすべて 1 つの点に収束します。

于 2013-10-21T11:24:29.067 に答える