Java 安卓|从当前位置获得北/南/东/西横向和远程

Java 安卓|从当前位置获得北/南/东/西横向和远程,java,android,geolocation,location,compass,Java,Android,Geolocation,Location,Compass,我正在一个应用程序上做一个项目,我需要根据我的当前位置发现其他设备 我希望以一种方式过滤这些设备,根据设备指向方向的北/南/东/西对它们进行分类 我读到一篇文章说将指南针方位转换为纵横向,但我怎么知道纵横向是在我的右边还是左边?北方还是南方 所以我假设你有纬度和经度坐标。 纬度表示赤道的北部和南部,经度表示本初子午线的东部和西部 如果要将纬度经度转换为东西南北方向,可以使用此方案 正纬度表示赤道以北,正经度表示本初子午线以东,反之亦然 简言之 +,+ -> North/East +,- -

我正在一个应用程序上做一个项目,我需要根据我的当前位置发现其他设备

我希望以一种方式过滤这些设备,根据设备指向方向的北/南/东/西对它们进行分类


我读到一篇文章说将指南针方位转换为纵横向,但我怎么知道纵横向是在我的右边还是左边?北方还是南方

所以我假设你有纬度和经度坐标。 纬度表示赤道的北部和南部,经度表示本初子午线的东部和西部

如果要将纬度经度转换为东西南北方向,可以使用此方案

正纬度表示赤道以北,正经度表示本初子午线以东,反之亦然

简言之

+,+ -> North/East
+,- -> North/West
-,+ -> South/East
-,- -> South/West
使用此键,您可以从您的基本位置找到任何板条对的相对方向

编辑示例


如果您的位置为50,50,而其他设备的位置为60,60,则意味着其他设备与您的相对位置分别向北10度和向东10度。您可以在android中轻松实现这种逻辑

Android Maps Util库有一个计算两个LatLng对象之间方位的函数

如果您还没有Android地图库,请将其包括在内

implementation 'com.google.maps.android:android-maps-utils:0.5'
将您当前的LatLng与其他设备的LatLng进行比较

LatLng myLocation;
LatLng otherPhone;

double heading = SphericalUtil.computeHeading(myLocation, otherPhone);
现在您可以随意使用标题,双精度表示从一个板条到另一个板条的标题。航向在[-180180]范围内以从北顺时针的角度表示


文档可以找到

右侧或左侧以及东部或西部都不相同,除非您向北行驶。那么,您想要哪一个?