我有一个 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/