相关疑难解决方法(0)

计算两个CLLocationCoordinate2D之间的方位

非常"简单"的问题:给定两个CLLocationCoordinate2Ds,如何从第一个到第二个获得方位(以弧度为单位)?我已经做了很多研究和研究,特别是一般问题和Objective-C/Cocoa Touch/iOS.

这是我的实现:

- (float) getHeadingForDirectionFromCoordinate:(CLLocationCoordinate2D)fromLoc toCoordinate:(CLLocationCoordinate2D)toLoc
{
    float fLat = fromLoc.latitude;
    float fLng = fromLoc.longitude;
    float tLat = toLoc.latitude;
    float tLng = toLoc.longitude;

    return atan2(sin(fLng-tLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(fLng-tLng));         
}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法并没有为我返回一致的结果.如果轴承接近正北或正南,看起来很好,但是,任何其他方向似乎都会返回不一致的数据,例如:

从50.405018,8.437500

至51.339802,12.403340

我的方法返回:5.918441弧度

应该是1.18660576弧度

(见http://www.movable-type.co.uk/scripts/latlong.htmlhttp://www.movable-type.co.uk/scripts/latlong-map.html?lat1=50.405018&long1=8.437500 &lat2 = 51.339802&long2 = 12.403340)

我已经双重和三重检查公式是正确的.我也发现了一些像上面的例子一样的值,有些是正确的,有些是错的.我玩过各种模数或返回值的界限,也没有运气.

有任何想法吗?我的代码有问题吗?也许我误解了数学函数是如何工作的?

objective-c core-location coordinates ios

38
推荐指数
3
解决办法
2万
查看次数

将CLLocation移动x米

我有一个CLLocation定义,我想将这个点移动到东边x米和南边y米.我怎么能实现这一目标?

iphone cocoa-touch latitude-longitude core-location

24
推荐指数
5
解决办法
9650
查看次数

计算Swift中两个CLLocation点之间的方位

我正在尝试计算仅限swift的代码中两个CLLocation点之间的方位.我遇到了一些困难,并假设这是一个非常简单的功能.堆栈溢出似乎没有列出任何内容.

func d2r(degrees : Double) -> Double {
    return degrees * M_PI / 180.0
}

func RadiansToDegrees(radians : Double) -> Double {
    return radians * 180.0 / M_PI
}


func getBearing(fromLoc : CLLocation, toLoc : CLLocation) {

    let fLat = d2r(fromLoc.coordinate.latitude)
    let fLng = d2r(fromLoc.coordinate.longitude)
    let tLat = d2r(toLoc.coordinate.latitude)
    let tLng = d2r(toLoc.coordinate.longitude)

    var a = CGFloat(sin(fLng-tLng)*cos(tLat));
    var b = CGFloat(cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(fLng-tLng))

    return atan2(a,b)
}
Run Code Online (Sandbox Code Playgroud)

我的atan2调用关于lvalue cgfloat或其他东西我收到错误...

cllocation ios swift

23
推荐指数
2
解决办法
2万
查看次数

计算 2 个 CLLocation 之间角度的有效方法?

这是计算从一个 CLLocation 到另一个 CLLocation 的角度(以弧度为单位)的有效方法吗?

-(float)angleFromLocation:(CLLocationCoordinate2D)start toLocation:(CLLocationCoordinate2D)end {
float deltaX = start.latitude - end.latitude;
float deltaY = start.longitude - end.longitude;
float ang = atan2(deltaY, deltaX);

return ang;}
Run Code Online (Sandbox Code Playgroud)

请指教!

任何帮助都感激不尽。

angle core-location coordinates augmented-reality

4
推荐指数
1
解决办法
3483
查看次数