Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 根据起点、方位和距离计算新纬度和经度的计算?_Iphone_Objective C_Geolocation_Location - Fatal编程技术网

Iphone 根据起点、方位和距离计算新纬度和经度的计算?

Iphone 根据起点、方位和距离计算新纬度和经度的计算?,iphone,objective-c,geolocation,location,Iphone,Objective C,Geolocation,Location,有人计算过新的价格吗 基于起点、方位和经度的纬度和经度 距离 我将非常感谢人们可能提供的任何帮助。您将在 您需要的代码(在JavaScript中)位于标题“给定距离和方向的目标点”下。摘录: var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) ); var lon2 = lon1 + Math.atan2(Math.sin(brng)

有人计算过新的价格吗 基于起点、方位和经度的纬度和经度 距离


我将非常感谢人们可能提供的任何帮助。

您将在

您需要的代码(在JavaScript中)位于标题“给定距离和方向的目标点”下。摘录:

var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
          Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                 Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
其中R=地球半径,d=距离(单位相同),lat/long以弧度为单位(因为这是
sin
函数所期望的)。你可以从度到弧度

radians = pi * degrees / 180;

你应该可以从这里开始。请务必查看我提供的链接以获取更多信息。

您将在

您需要的代码(在JavaScript中)位于标题“给定距离和方向的目标点”下。摘录:

var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
          Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                 Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
其中R=地球半径,d=距离(单位相同),lat/long以弧度为单位(因为这是
sin
函数所期望的)。你可以从度到弧度

radians = pi * degrees / 180;
你应该可以从这里开始。查看我提供的链接了解更多信息。

我使用了以下代码:

或使用Swift:

extension CLLocationCoordinate2D {
    func adjusted(distance: Double, degrees: Double) -> CLLocationCoordinate2D {
        let distanceRadians = distance / 6_371  // 6,371 == Earth's radius in km
        let bearingRadians = degrees.radians
        let fromLatRadians = latitude.radians
        let fromLonRadians = longitude.radians

        let toLatRadians = asin(sin(fromLatRadians) * cos(distanceRadians) + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians))

        var toLonRadians = fromLonRadians + atan2(sin(bearingRadians)
                                                     * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians)
                                                     - sin(fromLatRadians) * sin(toLatRadians))

        // adjust toLonRadians to be in the range -180 to +180...
        toLonRadians = fmod((toLonRadians + 3 * .pi), (2 * .pi)) - .pi

        return CLLocationCoordinate2D(latitude: toLatRadians.degrees, longitude: toLonRadians.degrees)
    }
}

extension CLLocationDegrees {
    var radians: Double { self * .pi / 180 }
}

extension Double {
    var degrees: CLLocationDegrees { self * 180 / .pi }
}
我使用了以下代码:

或使用Swift:

extension CLLocationCoordinate2D {
    func adjusted(distance: Double, degrees: Double) -> CLLocationCoordinate2D {
        let distanceRadians = distance / 6_371  // 6,371 == Earth's radius in km
        let bearingRadians = degrees.radians
        let fromLatRadians = latitude.radians
        let fromLonRadians = longitude.radians

        let toLatRadians = asin(sin(fromLatRadians) * cos(distanceRadians) + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians))

        var toLonRadians = fromLonRadians + atan2(sin(bearingRadians)
                                                     * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians)
                                                     - sin(fromLatRadians) * sin(toLatRadians))

        // adjust toLonRadians to be in the range -180 to +180...
        toLonRadians = fmod((toLonRadians + 3 * .pi), (2 * .pi)) - .pi

        return CLLocationCoordinate2D(latitude: toLatRadians.degrees, longitude: toLonRadians.degrees)
    }
}

extension CLLocationDegrees {
    var radians: Double { self * .pi / 180 }
}

extension Double {
    var degrees: CLLocationDegrees { self * 180 / .pi }
}

计算是否必须在大距离上精确?当你沿着一个大圈走的时候,“方位”会改变。你的意思是“起始方位”还是“恒定方位”?计算是否必须在大距离上精确?当你沿着一个大圈走的时候,“方位”会改变。你是说“起始方位”还是“持续方位”?