代码之家  ›  专栏  ›  技术社区  ›  Lee Armstrong

根据度数和距离获得新坐标

  •  0
  • Lee Armstrong  · 技术社区  · 16 年前

    我有一个坐标从核心位置,并想计算坐标给定的方位和距离,如公里。

    我想这就是这里的公式。 http://www.movable-type.co.uk/scripts/latlong.html

    公式:
    LAT2= asin(sin(lat1)*cos(d/r)+ cos(lat1)*sin(d/r)*cos())
    Lon 2= LUN1+ atan2(sin()*sin(d/r)*cos(lat1),即 cos(d/r)sin(lat1)*sin(lat2)
    D/R是 角距离(弧度) 其中d是行驶距离,以及 r是地球半径

    我有以下代码。

         CLLocationCoordinate2D linecoordstart;
         linecoordstart = [[existingpoints objectAtIndex:i] coordinate];
         NSString *bearing = [[existingpoints objectAtIndex:i] heading];
         NSString *distance = [[existingpoints objectAtIndex:i] distance];
    CLLocationCoordinate2D sourceCoordinate;
                    sourceCoordinate = [[existingpoints objectAtIndex:i] coordinate];
    
    
    NSLog(@"%f,%f",sourceCoordinate.latitude,sourceCoordinate.longitude);
       float lat2;
    int d = 5;
    int R = 6371;
    lat2 = asin(sin(sourceCoordinate.latitude)cos(d/R) + cos(sourceCoordinate.latitude)sin(d/R)cos(180));
    NSLog(@"%f",lat2);
    

    我想能够通过它的轴承,目前是一个nsstring和距离。我不知道如何使用数学.h函数来维持我的生活!

    1 回复  |  直到 16 年前
        1
  •  1
  •   Ramin    16 年前

    皈依 NSString 到您可以使用的数字:

    NSString* intNum = @"123";
    NSString* floatNum = @"123.456";
    int iv = [intNum intValue];
    float fv = [floatNum floatValue];
    

    而且,两者 d R 定义为 int 而不是 float )。在你的代码里 d/R 将值剪切为整数0。可能想做它们 浮动 (并用浮点值初始化它们)。