我有一个 MapView,我在其中使用地理点绘制建筑物。目前,该应用程序仅通过检查您的经度/纬度并与建筑物进行比较来确定离您最近的建筑物;但我想做的是将我的设备指向一栋建筑物并弹出该建筑物的信息,即使它不是离您最近的建筑物。
我已经查找了如何完成此操作,并且我将使用从 ORIENTATION 传感器侦听器接收到的方位角方向。我无法使用该方位角方向并确定它是否正在拦截地图上的其中一栋建筑物。
我会使用 ORIENTATION 传感器和方位角来完成此操作吗?我将如何实施呢?任何帮助表示赞赏!
我有一个 MapView,我在其中使用地理点绘制建筑物。目前,该应用程序仅通过检查您的经度/纬度并与建筑物进行比较来确定离您最近的建筑物;但我想做的是将我的设备指向一栋建筑物并弹出该建筑物的信息,即使它不是离您最近的建筑物。
我已经查找了如何完成此操作,并且我将使用从 ORIENTATION 传感器侦听器接收到的方位角方向。我无法使用该方位角方向并确定它是否正在拦截地图上的其中一栋建筑物。
我会使用 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 将其与手机定位的方位进行比较,以找出您指向的最近的建筑物。