首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找距初始GPS点10英尺的点

查找距初始GPS点10英尺的点
EN

Stack Overflow用户
提问于 2014-08-26 06:24:36
回答 2查看 41关注 0票数 0

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

所以,我给它添加了一个浮点数,现在是parseFloat("0.00002");我生成的点,我希望从它的底部看起来像什么,无论是北,南,东,或者西。但我得到的是一个数英里的点数列表。

这就是我所看到的一个例子:

代码语言:javascript
运行
复制
                                            ^
                                            |
                                          5-10 ft 
                                            |
               <--- 5-10 ft ---- [40.894375,-74.172555] ---- 5-10 ft --->
                                            |
                                          5-10 ft
                                            |
                                            v

有没有人知道我是怎么做到的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 07:48:29

我已经翻译了一个php函数(链接),它计算一个GPS点,如果你给它起点,长度,公里和方位。

若要找到您的要点,请使用以下函数

代码语言:javascript
运行
复制
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函数

代码语言:javascript
运行
复制
//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
EN

Stack Overflow用户

发布于 2014-08-27 09:51:17

1分钟经度(N<->S)为1海里= 6076.12英尺,10英尺为0,00164海里(1/6076.12*10)或0,00164为经度1分钟,或(/60) 2,752 e-5度。因此,您需要加/减2,752 e-5到/从长潮增加或减去10英尺。这是大约。你在问题中提到的号码。对于纬度(W<->E)赤道上的1分钟ia 1 NM,高纬度的距离变短(由纬度的余弦)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25499330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档