简体   繁体   English

需要知道如何为 Xcode Objective C 实现此代码

[英]Need to know how to implement this code for Xcode Objective C

I'm trying to get a GPS coordinate given the current location, bearing and distance.我正在尝试根据当前位置、方位和距离获取 GPS 坐标。

I found this code:我找到了这个代码:

- (double)degreesToRadians:(double)degrees {
return degrees * M_PI / 180;
}

- (double)radiansToDegrees:(double)radians {
return radians * 180/ M_PI;
}


- (CLLocationCoordinate2D)remoteCoordinate:(CLLocationCoordinate2D)localCoordinate withDistance:(double)distance withBearing:(double)bearing {

double earthRadius = 6378.1;         // Radius of Earth in kilometres.

double rLat1 = [self degreesToRadians:localCoordinate.latitude];     // Convert latitude to radians
double rLon1 = [self degreesToRadians:localCoordinate.longitude];    // Convert longitude to radians

double rLat2 = asinl( sinl(rLat1) * cosl(distance / earthRadius) + cosl(rLat1) * sinl(distance / earthRadius) * cosl(bearing) );
double rLon2 = rLon1 + atan2l( sinl(bearing) * sinl(distance/earthRadius) * cosl(rLat1), cosl(distance/earthRadius) - sinl(rLat1) * sinl(rLat2) );

double dLat2 = [self radiansToDegrees:rLat2];        // Convert latitude to degrees
double dLon2 = [self radiansToDegrees:rLon2];        // Convert longuitude to degrees

return CLLocationCoordinate2DMake(dLat2, dLon2);
}


Hello I am now to this iOS programing and I like to try out your code and see how it works out, now how do I implement this code?你好,我现在正在学习这个 iOS 编程,我喜欢尝试你的代码,看看它是如何工作的,现在我该如何实现这段代码? I can see the inputs of:我可以看到以下输入:

localCoordinate.latitude
localCoordinate.longitude
distance
bearing

the outputs of:输出:

dLat2
dLon2

do I start the processes?开始流程? are the inputs NSStrings?是输入 NSStrings 吗?

azimuth = [NSString stringWithFormat:@"%@.%@", deg1, min1];方位角 = [NSString stringWithFormat:@"%@.%@", deg1, min1]; // Degrees and Minutes // 度和分

intKiloMeters1 = [miles1 intValue] / 0.621371192; intKiloMeters1 = [miles1 intValue] / 0.621371192;

NSLog(@"you get km  %d", intKiloMeters1);

int distance;

distance = intKiloMeters1;

double bearing = [self degreesToRadians:[azimuth doubleValue]];双方位 = [self degreeToRadians:[azimuth doubleValue]];

double earthRadius = 6378.1;         // Radius of Earth in kilometres.

double rLat1 = [self degreesToRadians:myCoordinate.latitude];     // Convert latitude to radians
double rLon1 = [self degreesToRadians:myCoordinate.longitude];    // Convert longitude to radians
double rLat2 = asinl( sinl(rLat1) * cosl(distance / earthRadius) + cosl(rLat1) * sinl(distance / earthRadius) * cosl(bearing) );
double rLon2 = rLon1 + atan2l( sinl(bearing) * sinl(distance/earthRadius) * cosl(rLat1), cosl(distance/earthRadius) - sinl(rLat1) * sinl(rLat2) );

double finalLat1 = [self radiansToDegrees:rLat2];        // Convert latitude to degrees
double finalLong1 = [self radiansToDegrees:rLon2];        // Convert longuitude to degrees

NSLog(@"Export Lat %f Long %f", finalLat1, finalLong1);

CLLocationCoordinate2D unknownCoordinate = {finalLat1, finalLong1};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM