Android
MapView
マップベースのアプリケーションの開発に取り組んでいます。特定のからXの距離を見つける必要がありますCo-ordinates
。方向は私の優先事項ではありません距離は私の優先事項です特定の場所から100メートルを見つける必要があるとしましょう。どうすればそれができるかについてのアイデアを読んで答えてくれてありがとう。
質問する
2085 次
2 に答える
8
原点から特定の距離だけ離れた直線上の点を計算するには、距離だけでなく方位 (または方向) も必要です。これは、開始位置、方位、距離 (深さ) を取り、目的地の位置を返す関数です (Android の場合): KM からメートルなどに変換したい場合があります。
public static Location GetDestinationPoint(Location startLoc, float bearing, float depth)
{
Location newLocation = new Location("newLocation");
double radius = 6371.0; // earth's mean radius in km
double lat1 = Math.toRadians(startLoc.getLatitude());
double lng1 = Math.toRadians(startLoc.getLongitude());
double brng = Math.toRadians(bearing);
double lat2 = Math.asin( Math.sin(lat1)*Math.cos(depth/radius) + Math.cos(lat1)*Math.sin(depth/radius)*Math.cos(brng) );
double lng2 = lng1 + Math.atan2(Math.sin(brng)*Math.sin(depth/radius)*Math.cos(lat1), Math.cos(depth/radius)-Math.sin(lat1)*Math.sin(lat2));
lng2 = (lng2+Math.PI)%(2*Math.PI) - Math.PI;
// normalize to -180...+180
if (lat2 == 0 || lng2 == 0)
{
newLocation.setLatitude(0.0);
newLocation.setLongitude(0.0);
}
else
{
newLocation.setLatitude(Math.toDegrees(lat2));
newLocation.setLongitude(Math.toDegrees(lng2));
}
return newLocation;
};
于 2013-01-15T07:20:07.260 に答える