swift Swift - 扩展到CLLocation以获取坐标的笛卡尔表示。来源:http://stackoverflow.com/a/5983282/273119

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Swift - 扩展到CLLocation以获取坐标的笛卡尔表示。来源:http://stackoverflow.com/a/5983282/273119相关的知识,希望对你有一定的参考价值。

import Darwin
import Foundation
import CoreLocation

extension CLLocation {
    
    /**
        source: http://stackoverflow.com/a/5983282/273119
    
        Find cartesian representation for latitude, longitude and altitude.
        returns (x,y,z)
    */
    var cartesianCoordinates: (Double, Double, Double) {
        let rE = 6378137.0
        let rP = 6356752.31424518
        
        let latrad = coordinate.latitude/180.0 * M_PI
        let lonrad = coordinate.longitude/180.0 * M_PI
        
        let coslat = cos(latrad)
        let sinlat = sin(latrad)
        let coslon = cos(lonrad)
        let sinlon = sin(lonrad)
        
        let term1 = (pow(rE, 2) * coslat) / sqrt(pow(rE, 2) * pow(coslat,2) + pow(rP,2) * pow(sinlat, 2))
        
        let term2 = altitude * coslat + term1
        
        let x = coslon * term2
        let y = sinlon * term2
        let z = altitude * sinlat + (pow(rP, 2) * sinlat) / sqrt(pow(rE, 2) * pow(coslat, 2) + pow(rP, 2) * pow(sinlat, 2))
        
        return (x,y,z)
    }
    
}

以上是关于swift Swift - 扩展到CLLocation以获取坐标的笛卡尔表示。来源:http://stackoverflow.com/a/5983282/273119的主要内容,如果未能解决你的问题,请参考以下文章

我可以防止将扩展导出到 Objective-C 的 Swift 标头吗?

Swift 2 集合视图扩展,用于水平滚动到垂直

无法从 NSUserDefaults 检索数据到今天的扩展(Swift)

Swift 3:将UIButton扩展添加到ViewController

swift Swift - 扩展到CLLocation以获取坐标的笛卡尔表示。来源:http://stackoverflow.com/a/5983282/273119

swift Swift - 扩展到CLLocation以获取坐标的笛卡尔表示。来源:http://stackoverflow.com/a/5983282/273119