1
에 두 배로 문자열에서 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. –