北、北東、東、東南、南、南西、西、西北などの地理的な方向を取得するために磁気方位の値を計算する方法は?
磁気方位は度の値のみを返すため、継続的に更新される磁気方位に基づいて、地理的な方向を示す必要があります。
どうすればそれを可能にできますか?
北、北東、東、東南、南、南西、西、西北などの地理的な方向を取得するために磁気方位の値を計算する方法は?
磁気方位は度の値のみを返すため、継続的に更新される磁気方位に基づいて、地理的な方向を示す必要があります。
どうすればそれを可能にできますか?
以下は、地理的な方向を継続的に更新して表示するために使用したコードです。
CGFloat currentHeading = newHeading.magneticHeading;
NSString *strDirection = [[NSString alloc] init];
if(gradToRotate >23 && gradToRotate <= 67){
strDirection = @"NE";
} else if(gradToRotate >68 && gradToRotate <= 112){
strDirection = @"E";
} else if(gradToRotate >113 && gradToRotate <= 167){
strDirection = @"SE";
} else if(gradToRotate >168 && gradToRotate <= 202){
strDirection = @"S";
} else if(gradToRotate >203 && gradToRotate <= 247){
strDirection = @"SW";
} else if(gradToRotate >248 && gradToRotate <= 293){
strDirection = @"W";
} else if(gradToRotate >294 && gradToRotate <= 337){
strDirection = @"NW";
} else if(gradToRotate >=338 || gradToRotate <= 22){
strDirection = @"N";
}
私の最後ではうまく機能しています。マスターは、変更が必要な場合は私に知らせてください。
Github で Matt Neuburg が提供するこの例を試してください。 https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p775heading/ch35p1035heading/ViewController.swift
func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
var h = newHeading.magneticHeading
let h2 = newHeading.trueHeading // will be -1 if we have no location info
print("\(h) \(h2) ")
if h2 >= 0 {
h = h2
}
let cards = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"]
var dir = "N"
for (ix, card) in cards.enumerate() {
if h < 45.0/2.0 + 45.0*Double(ix) {
dir = card
break
}
}
print(dir)
}
それは完璧です!