私はAndroidプログラミングにはかなり新しいですが、私はかなり良くなっています(私は思っています:))
私が行っているのは、位置情報付きの物語アプリを構築することです。特定のGPSマーカーにオーディオファイルを置き、ユーザーが特定の場所でそれらを聴くことを可能にするアプリケーションです。GPS座標を移動する
次のステップは、オーディオファイルを移動することです。私がしたいことは、都市の特定の位置にマーカーを設定することです。 (完了)。次に、周りを円で動く2番目のマーカーの位置を確認したいと思います。私は円形に周りのムービークリップの動きを作っアドビフラッシュでこのコードを、チェックして、今すぐ
public void checkCircularPosition(){
/*
* could be a solution?
*
radius = 250; //offset in meters
gpsLatCenter = 5.1164; //?how can i make this accurate in meters?
gpsLonCenter = 52.0963; //??how can i make this accurate in meters?
degree = 0; //should be variable over time (full circle in 1Hr, 3600sec --> 360/3600 = 0,1 deg/s)
radian;
radian = (degree/180)*Math.PI;
gpsCircleLat = gpsLatCenter+Math.cos(radian)*radius;
gpsCircleLon = gpsLonCenter-Math.sin(radian)*radius;
*/
}
:
は、私がこれまで持っていることはこれです。だから私は計算が幾分正しいことを知っている。しかし、私は結果の座標の緯度と経度を計算する方法がありません。
EDIT !!
以下のヘルプが表示されたソリューションが見つかりました。結果を使用する方法を理解するためにまだ多くの作業をしています。とにかく、私は以下の関数を投稿しました。
この作業を行うには、6371(地球の半径)、方位、距離、開始位置が必要です。
ありがとう、たくさんの人!
public static void destinationPoint(double brng, double dist) {
dist = dist/_radius; // convert dist to angular distance in radians
brng = Math.toRadians(brng); //
double lat1 = Math.toRadians(_lat);
double lon1 = Math.toRadians(_lon);
double lat2 = Math.asin(Math.sin(lat1)*Math.cos(dist) + Math.cos(lat1)*Math.sin(dist)*Math.cos(brng));
double lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(dist)*Math.cos(lat1), Math.cos(dist)-Math.sin(lat1)*Math.sin(lat2));
lon2 = (lon2+3*Math.PI) % (2*Math.PI) - Math.PI; // normalise to -180..+180º
Log.i(APPTAG, ""+Math.toDegrees(lat2));
Log.i(APPTAG, ""+Math.toDegrees(lon2));
Location movLoc = new Location("");
movLoc.setLatitude(Math.toDegrees(lat2));
movLoc.setLongitude(Math.toDegrees(lon2));
Log.i(APPTAG, ""+movLoc);
}
ありがとうございます!編集した投稿に私の機能を掲載しました。 – Tony