2011-06-19 61 views
3

我有2个坐标,并希望做一些看似简单的事情。我想弄清楚,给出:找出距离和两个坐标之间的路线

1)协调由核心定位 3)坐标B提供 2)场

以下:

1)A和B之间的距离(目前可以可以使用distanceFromLocation来完成),那么就可以。 2)从A到B应该采取的过程(与当前旅行的过程不同)

有没有一种简单的方法可以实现这一点,任何第三方或内置API?

苹果似乎并没有提供这个,但我可能是错的。

感谢, 〜阿拉什

编辑:

感谢您的快速响应,我相信有可能是有些混乱,我希望得到的过程(从点轴承的点B度,使0度=北,90度=东,类似于CLLocation课程价值回归,不是试图通过转动方向来计算实际转弯。

回答

1
+0

使用这种方法,我得到335.218658度,其中例如在这里公布:http://www.movable-type.co。 uk/scripts/latlong.html给出了159的初始方位。*和160的最终方位。*这是一个正确的还是一个正确的? – iOS4Life

+0

看起来这个答案是使用等值矩形投影的Pythagoras定理,它不如我的答案使用的Cosines算法的球面定律准确,但它使用较少的三角函数,所以可能会更快。阅读[本页](http://www.movable-type.co.uk/scripts/latlong.html)可以比较不同的算法。 – progrmr

+0

看起来像159.〜是正确的初始轴承,如果你是相反的方向,那么它应该是从点b到点a的初始轴承340,所以我认为我已经正确实施了这一点,并且我的最终方向是告诉我从b点到a点(相反的方向)的轴承,但仍然是一个很好的轴承数量。思考? – iOS4Life

4

我在GitHub上,做一些代码。看看headinginRadians here。它基于Cosines的球形定律。来自this page算法的代码。

/*------------------------------------------------------------------------- 
* Given two lat/lon points on earth, calculates the heading 
* from lat1/lon1 to lat2/lon2. 
* 
* lat/lon params in radians 
* result in radians 
*-------------------------------------------------------------------------*/ 
double headingInRadians(double lat1, double lon1, double lat2, double lon2) 
{ 
    //------------------------------------------------------------------------- 
    // Algorithm found at http://www.movable-type.co.uk/scripts/latlong.html 
    // 
    // Spherical Law of Cosines 
    // 
    // Formula: θ = atan2(sin(Δlong) * cos(lat2), 
    // cos(lat1) * sin(lat2) − sin(lat1) * cos(lat2) * cos(Δlong)) 
    // JavaScript: 
    // 
    // var y = Math.sin(dLon) * Math.cos(lat2); 
    // var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); 
    // var brng = Math.atan2(y, x).toDeg(); 
    //------------------------------------------------------------------------- 
    double dLon = lon2 - lon1; 
    double y = sin(dLon) * cos(lat2); 
    double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon); 

    return atan2(y, x); 
} 
+0

感谢progrmr,我现在检查了这一点! – iOS4Life

+0

双标题inRadians(双lat1,双lon1,双lat2,双lon2) 这是我试过的方法,并提供以下作为输入给我一个-0.343130弧度的结果,我转换为度数并得到340.340088。你能证实我做对了吗? 传入以下坐标: \t \t LAT1 = 36.868148 \t \t long1 = -76.046454 \t \t LAT2 = 39.174231 \t \t long2 = -77.111107 所有这些都是之前,使用进入的公式转换为弧度以下公式: (值/ 180)* M_PI 任何帮助表示赞赏,再次感谢! – iOS4Life

+0

你可以使用一个在线计算器来检查它自己,如这个[here](http://www.csgnetwork.com/gpsdistcalc.html) – progrmr

0

如果我正确理解你,你有当前的位置,你有一些其他的位置。你想找到两点之间的距离(如乌鸦),并找到点之间的步行路径。

为了回答你的第一个问题,distanceFromLocation会找到两个点之间的地球表面距离,即它跟随地球的曲率,但它会给你与乌鸦苍蝇的距离。所以我认为你是对的。

第二个问题更困难。你想要做的就是所谓的路径寻找。路径查找,不仅需要搜索算法来决定路径,还需要关于可能路径的数据。也就是说,如果你想要通过街道找到一条路,计算机必须知道街道是如何相互连接的。此外,如果您试图制定一个考虑流量的探路者以及采取两条不同可能路径之间的时间差异,则您将需要更多数据。正是由于这个原因,我们通常会把这些任务交给大公司,并且有很多资源,比如谷歌和雅虎。

但是,如果你还有兴趣做这件事,看看这个 http://www.youtube.com/watch?v=DoamZwkEDK0

+0

请参阅编辑过的文章,我不是说要走的路径而是以度为单位的轴承,例如北向90度的东经0度等。 – iOS4Life

相关问题