我正在开发移动应用程序。我的应用程序获取用户位置和方向,然后在他的位置附近显示一些兴趣点。 现在,我需要知道用户是否在兴趣点前面。我的想法是根据他的位置和方向,使用一个小半径(约5米)的圆形扇区来做这个,我想知道是否有任何公式或者是否有人建议如何实现这一点。
答案 0 :(得分:0)
我假设您有Lat / Lon坐标和用户移动/查看方位角。 你可以计算物体的方向和它的方位角(方位角)并与你的极限进行比较。
注意:GPS /地理定位难以确保5米精度
此excellent page 包含所有必需的公式。摘录:
distance
JavaScript:
var R = 6371000; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();
var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
bearing
JavaScript:
(all angles in radians)
var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) -
Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x).toDegrees();