android - 确定您的 Android 设备指向的构建

标签 android orientation android-mapview android-sensors azimuth

我有一个 MapView,我在其中使用地理点绘制建筑物。目前,该应用程序仅通过检查您的经度/纬度并与建筑物进行比较来确定离您最近的建筑物;但我希望能够做的是将我的设备指向建筑物并弹出建筑物信息,即使它不是离您最近的建筑物。

我已经查看了如何完成此操作,并且我将使用从 ORIENTATION 传感器监听器接收到的方位角方向。我无法使用该方位角方向并确定它是否拦截了 map 上的其中一栋建筑物。

我是否会使用 ORIENTATION 传感器和方位角来完成此操作?我将如何着手实现这个?任何帮助表示赞赏!

最佳答案

找出解决方案:

我使用此函数(和辅助函数)获取从我当前位置到我周围最近建筑物的方位(使用设置的半径):

public static float calculateBearing(GeoPoint before, GeoPoint after) {
    Point pBefore = location2Point(before);
    Point pAfter = location2Point(after);

    float res = -(float) (Math.atan2(pAfter.y - pBefore.y, pAfter.x
            - pBefore.x) * 180 / Math.PI) + 90.0f;
    if (res < 0)
        return res + 360.0f;
    else
        return res;
}

public static Point location2Point(GeoPoint aLocation) {
    return new Point((int) (aLocation.getLongitudeE6()),
            (int) (aLocation.getLatitudeE6()));
}

一旦了解了周围建筑物的方位;然后,您必须使用 TYPE_ORIENTATION 传感器的 SensorEventListener 将其与手机所处的方位进行比较,以找出您指向的最近建筑物。

关于android - 确定您的 Android 设备指向的构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711623/

相关文章:

android - 由于 Layer.com 还没有 Web SDK,我可以使用什么来自己将其集成到 Web 移动聊天应用程序中?

ios - UIBarButtonItem 改变 viewController 的方向

旋转时Android应用程序崩溃

objective-c - AppDelegate 中的方向检测

java - 打开街道 map (osmdroid) 在 PC 中显示灰色瓷砖而不是 map

android - 从 mMapView.getOverlays() 获取标记 (org.osmdroid.bonuspack.overlays)

android - RelativeLayout中不能存在循环依赖项吗?

android - Intent extra 即使在更新后也保持不变

java - 如何获得 firebase token ?

ios - react native 不变违规 : Element type is invalid