summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2017-09-10 16:47:58 -0700
committerMinh Nguyễn <mxn@1ec5.org>2017-11-02 15:19:54 -0700
commit788482e1159c0a7cbd194485ca423d9b7bfcc0cc (patch)
treece16212983f60f3bd87f109e53a5e3aafe4ed6f3
parent7a1fdd8fa6919d6f50e2b99448a9b5822c2c60a9 (diff)
downloadqtlocation-mapboxgl-788482e1159c0a7cbd194485ca423d9b7bfcc0cc.tar.gz
[ios] Cleaned up radian conversions
-rw-r--r--platform/ios/src/MGLMapAccessibilityElement.m23
1 files changed, 15 insertions, 8 deletions
diff --git a/platform/ios/src/MGLMapAccessibilityElement.m b/platform/ios/src/MGLMapAccessibilityElement.m
index 84f44090ac..e220030399 100644
--- a/platform/ios/src/MGLMapAccessibilityElement.m
+++ b/platform/ios/src/MGLMapAccessibilityElement.m
@@ -13,16 +13,23 @@ typedef struct {
MGLLocationRadians longitude;
} MGLRadianCoordinate2D;
+MGLRadianCoordinate2D MGLRadianCoordinate2DMake(MGLLocationRadians latitude, MGLLocationRadians longitude) {
+ MGLRadianCoordinate2D radianCoordinate = {
+ .latitude = latitude,
+ .longitude = longitude,
+ };
+ return radianCoordinate;
+}
+
+MGLRadianCoordinate2D MGLRadianCoordinate2DFromLocationCoordinate2D(CLLocationCoordinate2D degreeCoordinate) {
+ return MGLRadianCoordinate2DMake(degreeCoordinate.latitude * M_PI / 180, degreeCoordinate.longitude * M_PI / 180);
+}
+
/** Returns the direction from one coordinate to another. */
CLLocationDirection MGLDirectionBetweenCoordinates(CLLocationCoordinate2D firstCoordinate, CLLocationCoordinate2D secondCoordinate) {
- MGLRadianCoordinate2D firstRadianCoordinate = {
- firstCoordinate.latitude * M_PI / 180,
- firstCoordinate.longitude * M_PI / 180,
- };
- MGLRadianCoordinate2D secondRadianCoordinate = {
- secondCoordinate.latitude * M_PI / 180,
- secondCoordinate.longitude * M_PI / 180,
- };
+ // Ported from https://github.com/mapbox/turf-swift/blob/857e2e8060678ef4a7a9169d4971b0788fdffc37/Turf/Turf.swift#L23-L31
+ MGLRadianCoordinate2D firstRadianCoordinate = MGLRadianCoordinate2DFromLocationCoordinate2D(firstCoordinate);
+ MGLRadianCoordinate2D secondRadianCoordinate = MGLRadianCoordinate2DFromLocationCoordinate2D(secondCoordinate);
CGFloat a = sin(secondRadianCoordinate.longitude - firstRadianCoordinate.longitude) * cos(secondRadianCoordinate.latitude);
CGFloat b = (cos(firstRadianCoordinate.latitude) * sin(secondRadianCoordinate.latitude)