【发布时间】:2012-03-28 00:25:48
【问题描述】:
我需要计算两个地理位置点之间的方向(定义了纬度和对数)。我真的不需要整个角度(我发现了类似的东西),但只有 N、NE、E、SE、S、SW、W、NW 就可以了。
感谢任何帮助
【问题讨论】:
标签: android geolocation
我需要计算两个地理位置点之间的方向(定义了纬度和对数)。我真的不需要整个角度(我发现了类似的东西),但只有 N、NE、E、SE、S、SW、W、NW 就可以了。
感谢任何帮助
【问题讨论】:
标签: android geolocation
您可以使用 Location.bearingTo (http://developer.android.com/reference/android/location/Location.html#bearingTo%28android.location.Location%29)
从您的点创建 2 个位置对象,您可以获得精确的方位。然后您只需将其与 8 个值进行比较。 (比如在 -22.5 和 +22.5 之间是 N,直到 67.5 是 NE,直到 112.5 是 E,依此类推)
【讨论】:
如果它们是短距离,您可以通过按原样获取纬度/经度并通过 atan2(y,x) 计算角度来进行近似,其中 y 是纬度,x 是经度。将生成的角度转换为 N、NE、SW 等。请注意国际日期变更线附近。
【讨论】:
好吧,假设你得到一个从 0º 到 360º 的度数,你可以使用一个简单的方法,比如:
String[] coordNames = { "N", "NE", "E", "SE", "S", "SW", "W", "NW" };
// assuming this value comes from somewhere else
int degrees = val;
degrees %= 360;
degrees /= 45;
String coord = coordNames[degrees];
您可能会注意到,这不会为您提供正确的近似值。 0º 到 44º 会给出 N,45º 到 89º 会给出 NE,依此类推。
希望它能让你走上正轨!
【讨论】: