1
所以我有一些座標看起來像更好的方法來分析和String轉換DMS座標翻一番斯威夫特
N47° 15' 36.75",E011° 20' 38.28",+001906.00
和我創建了一個類來解析並將它們轉換成翻倍
struct PLNWaypointCoordinate {
var latitude: Double = 0.0
var longitude: Double = 0.0
init(coordinateString: String) {
self.latitude = convertCoordinate(string: coordinateString.components(separatedBy: ",")[0])
self.longitude = convertCoordinate(string: coordinateString.components(separatedBy: ",")[1])
}
private func convertCoordinate(string: String) -> Double {
var separatedCoordinate = string.characters.split(separator: " ").map(String.init)
let direction = separatedCoordinate[0].components(separatedBy: CharacterSet.letters.inverted).first
let degrees = Double(separatedCoordinate[0].components(separatedBy: CharacterSet.decimalDigits.inverted)[1])
let minutes = Double(separatedCoordinate[1].components(separatedBy: CharacterSet.decimalDigits.inverted)[0])
let seconds = Double(separatedCoordinate[2].components(separatedBy: CharacterSet.decimalDigits.inverted)[0])
return convert(degrees: degrees!, minutes: minutes!, seconds: seconds!, direction: direction!)
}
private func convert(degrees: Double, minutes: Double, seconds: Double, direction: String) -> Double {
let sign = (direction == "W" || direction == "S") ? -1.0 : 1.0
return (degrees + (minutes + seconds/60.0)/60.0) * sign
}
}
我的問題是,正如標題所說,是有進行這種轉換一個更好,更安全的方式?
末方法我已經在這裏撿到。對不起,但我找不到引用它的鏈接。
我投票結束這個問題作爲題外話,因爲我認爲它可能會更好地問http://codereview.stackexchange.com。好問題,但! –
發表於CR現在:http://codereview.stackexchange.com/questions/153291/parsing-and-converting-dms-coordinates-from-string-to-double。 –