Skip to content

Commit

Permalink
Add helpers for CoreLocation interoperability
Browse files Browse the repository at this point in the history
  • Loading branch information
florianreinhart committed Jun 19, 2024
1 parent 879ef86 commit f94f9d8
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
30 changes: 30 additions & 0 deletions Sources/GeodesySpherical/CoreLocationSupport.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//
// CoreLocationSupport.swift
// swift-geodesy
//
// Created by Florian Reinhart on 19/06/2024.
//

#if canImport(CoreLocation)

import CoreLocation

public extension Coordinate {
init(_ coordinate: CLLocationCoordinate2D) {
self.init(coordinate.latitude, coordinate.longitude)
}

init(_ location: CLLocation) {
self.init(location.coordinate)
}

var clLocationCoordinate2D: CLLocationCoordinate2D {
CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}

var clLocation: CLLocation {
CLLocation(latitude: latitude, longitude: longitude)
}
}

#endif
12 changes: 12 additions & 0 deletions Tests/GeodesySphericalTests/GeodesySphericalTest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -417,4 +417,16 @@ final class GeodesySphericalTest: XCTestCase {
XCTAssertNil(distance)
}
}

#if canImport(CoreLocation)
func testCoreLocation() {
for coordinate in [cambridge, paris, greenwich, bradwell, dov, cal] {
XCTAssertEqual(coordinate, Coordinate(coordinate.clLocationCoordinate2D))
XCTAssertEqual(coordinate, Coordinate(coordinate.clLocation))
XCTAssertEqual(coordinate.clLocationCoordinate2D.latitude, coordinate.clLocation.coordinate.latitude)
XCTAssertEqual(coordinate.clLocationCoordinate2D.longitude, coordinate.clLocation.coordinate.longitude)
}
}
#endif

}

0 comments on commit f94f9d8

Please sign in to comment.