找到距离初始GPS点10英尺的点

时间:2014-08-26 06:24:37

标签: javascript gps

所以我有一点[40.894375,-74.172555],我想在它周围创建一个边框。

所以我要做的是为它添加一个浮动数字,当前是parseFloat(" 0.00002"); 而且我产生了一些点,我希望它们看起来像北方,南方,东方或西方的底部。 但我得到的是多个英里的点数列表。

这是我正在寻找的一个例子:

                                            ^
                                            |
                                          5-10 ft 
                                            |
               <--- 5-10 ft ---- [40.894375,-74.172555] ---- 5-10 ft --->
                                            |
                                          5-10 ft
                                            |
                                            v

有没有人知道如何才能做到这一点?

2 个答案:

答案 0 :(得分:1)

我已经翻译了一个PHP函数(link),如果你给它一个起点,以km为单位的长度和方位,它就会计算一个GPS点。

要查找您的积分,请使用

功能
geoDestination([40.894375,-74.172555], 0.003048, 0); //Point 10 ft north
geoDestination([40.894375,-74.172555], 0.003048, 90); //Point 10 ft east
geoDestination([40.894375,-74.172555], 0.003048, 180); //Point 10 ft south
geoDestination([40.894375,-74.172555], 0.003048, 270); //Point 10 ft west

翻译的php函数

//start is a array [lat, long]
//dist in km
//brng in degrees
function geoDestination(start, dist, brng){
   lat1 = toRad(start[0]);
   lon1 = toRad(start[1]);
   dist = dist/6371.01; //Earth's radius in km
   brng = toRad(brng);

   lat2 = Math.asin( Math.sin(lat1)*Math.cos(dist) +
              Math.cos(lat1)*Math.sin(dist)*Math.cos(brng) );
   lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(dist)*Math.cos(lat1),
                      Math.cos(dist)-Math.sin(lat1)*Math.sin(lat2));
   lon2 = fmod((lon2+3*Math.PI),(2*Math.PI)) - Math.PI;  

   return [toDeg(lat2),toDeg(lon2)];
}

function toRad(deg){
   return deg * Math.PI / 180;
}

function toDeg(rad){
   return rad * 180 / Math.PI;
}

function fmod(a, b) {
   return Number((a - (Math.floor(a / b) * b)).toPrecision(8));
}

答案 1 :(得分:1)

经度的一分钟(N - S)是1海里(海里)= 6076.12英尺,因此10英尺是0,00164海里(1/6076.12 * 10)或经度1分钟的0,00164 ,或(/ 60)2,752e-5的longutide程度。因此,您需要在longutide中添加/减去2,752e-5以添加或减去10英尺。这是约。你在问题中提到的数字。 对于纬度(W - E)在赤道上1分钟1海里,对于更高纬度,距离变得更短(通过纬度的余弦)。