我有一个MapView,我在其中使用geopoints绘制建筑物。目前,该应用程序只需检查您的长/纬度并与建筑物进行比较即可确定距离您最近的建筑物;但我想要做的就是将我的设备指向建筑物并将建筑物信息弹出,即使它不是距离您最近的建筑物。
我已经查明了如何完成此操作,并且我将使用从ORIENTATION传感器侦听器接收的方位角方向。我无法使用该方位角方向并确定它是否正在截取地图上的某个建筑物。
我是否会使用ORIENTATION传感器和方位角来完成此任务?我将如何实现这一目标?任何帮助表示赞赏!
答案 0 :(得分:0)
找出解决方案:
我使用这个函数(和辅助函数)从当前位置到我周围最近的建筑物(使用设定半径):
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()));
}
一旦你掌握了周围建筑物的方位;然后,您必须使用SensorEventListener为TYPE_ORIENTATION传感器将其与手机所在位置进行比较,以找出您指向哪个最近的建筑物。