0
我正在使用適用於iOS的Google Maps SDK。移動GMSMarker by X Meters Deflections
我的項目需要能夠沿着繪製在地圖視圖上的預定路徑將當前位置標記移動x米。所以我從this question(由科瑞比蘭德答案)實施下面的方法:
func distance(distance: Double, AwayFromCoordinate origin: CLLocationCoordinate2D, WithBearing bearing: Double) -> CLLocationCoordinate2D {
let earthRadius = 6372797.6 // in meters
let radianDistance = distance/earthRadius
let radianBearing = bearing * M_PI/180.0
let latitude = origin.latitude * M_PI/180
let longitude = origin.longitude * M_PI/180
let lat2 = asin(sin(latitude) * cos(radianDistance) + cos(latitude) * sin(radianDistance) * cos(radianBearing))
let lon2 = longitude + atan2(sin(radianBearing) * sin(radianDistance) * cos(latitude), cos(radianDistance) - sin(longitude) * sin(lat2))
return CLLocationCoordinate2DMake(lat2 * 180/M_PI, lon2 * 180/M_PI)
}
所以,如果我把上面的方法如下所示:
currentLocationMarker.position = distance(0.5, AwayFromCoordinate: currentLocationMarker.position, WithBearing: bearing)
這就產生了我一個新的位置0.5距離當前位置數米。
但是存在該運動開始偏轉有點像下面的一個小問題,即使出發點是一樣的:
我無法弄清楚,爲什麼這樣的偏轉發生,不直。有任何想法嗎?