【问题标题】:How to find the angular direction to a point in the map (respect to north)如何找到地图中某个点的角度方向(相对于北方)
【发布时间】:2012-12-10 21:23:06
【问题描述】:

我需要在地图中找到北方和一点之间的角度 (21.4167, -39.8167)。

这是我的代码

double MECCA_LONGITUDE = 21.4167;
double MECCA_LATITUDE = -39.8167;

-(void) getAngle :(float) phoneAngle: (float) lon:(float) lat
{

 float ad = atan (sin (lon - MECCA_LATITUDE) /  ( (cos (lat)) * (tan (MECCA_LATITUDE)) ) - ( (sin (lat)) * (cos (lon - MECCA_LONGITUDE)) ));

NSLog(@"###### %f", CC_RADIANS_TO_DEGREES(ad));
}

我仍然没有得到正确的答案。任何提示将不胜感激。谢谢。

【问题讨论】:

    标签: ios c map


    【解决方案1】:

    您的主要问题是 sin()cos() 以弧度表示它们的参数,并且您正在传递度数(您还交换了麦加的经度和纬度)。

    试试:

    double MECCA_LATITUDE = 21.4167;
    double MECCA_LONGITUDE = 39.8167;
    
    double r_delta_lon = CC_DEGREES_TO_RADIANS(MECCA_LONGITUDE - lon);
    double r_lat2 = CC_DEGREES_TO_RADIANS(MECCA_LATITUDE);
    double r_lon1 = CC_DEGREES_TO_RADIANS(lon);
    double r_lat1 = CC_DEGREES_TO_RADIANS(lat);
    
    double ad = atan2(sin(r_delta_lon) * cos(r_lat2),
        cos(r_lat1) * sin(r_lat2) - sin(r_lat1) * cos(r_lat2) * cos(r_delta_lon));
    

    【讨论】:

    • 谢谢。这解决了问题。
    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多