我有一个来自Core Location的坐标,想要计算坐标和距离的坐标,比如km。
我认为这是这里的公式。 http://www.movable-type.co.uk/scripts/latlong.html
公式:
lat2 = asin(sin(lat1)* cos(d / R)+ COS(LAT1)* SIN(d / R)* COS(θ))
lon2 = lon1 + 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和距离。我不知道如何在我的生活中使用Math.h函数!
答案 0 :(得分:1)
要从NSString
转换为您可以使用的数字:
NSString* intNum = @"123";
NSString* floatNum = @"123.456";
int iv = [intNum intValue];
float fv = [floatNum floatValue];
此外,d
和R
都定义为int
(而不是float
)。在您的代码中d/R
会将值剪切为整数0.可能希望将它们设为float
(并使用浮点值初始化它们)。