6

我想放置设施来显示用户选择的两个地方之间的距离。

是否有任何示例源代码/服务可以这样做?

提前致谢。

4

6 回答 6

12

CoreLocation 框架提供了计算两点之间距离(​​以米为单位)的能力:

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

CLLocation你可以用纬度和经度初始化一个对象:

- (id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude
于 2009-10-29T11:55:51.293 回答
3

如果你有两个 CLLocation 对象,你可以这样做:

[location1 getDistanceFrom:location2];

但是,这只是点对点。如果您想要特定路线上的距离,那是另一回事。

于 2009-10-29T11:54:26.117 回答
2

这是 CLLocation 框架的任务。使用 2 个点的已知坐标,您可以创建(如果您还没有)2 个 CLLocation 对象并使用它们找到它们之间的距离

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

方法。

于 2009-10-29T11:54:03.663 回答
2

我不熟悉 iPhone 开发,但这里是使用 Haversine 公式计算两点之间距离的 C# 代码:

/// <summary>
/// Computes the distance beween two points
/// </summary>
/// <param name="P1_Latitude">Latitude of first point (in radians).</param>
/// <param name="P1_Longitude">Longitude of first point(in radians).</param>
/// <param name="P2_Latitude">Latitude of second point (in radians).</param>
/// <param name="P2_Longitude">Longitude of second point (in radians).</param>
protected double ComputeDistance(double P1_Longitude, double P1_Latitude, double P2_Longitude, double P2_Latitude, MeasurementUnit unit)
{            
    double dLon = P1_Longitude - P2_Longitude;
    double dLat = P1_Latitude - P2_Latitude;

    double a = Math.Pow(Math.Sin(dLat / 2.0), 2) +
            Math.Cos(P1_Latitude) *
            Math.Cos(P2_Latitude) *
            Math.Pow(Math.Sin(dLon / 2.0), 2.0);

    double c = 2 * Math.Asin(Math.Min(1.0, Math.Sqrt(a)));
    double d = (unit == MeasurementUnit.Miles ? 3956 : 6367) * c;
    return d;

}

MeasurementUnit 定义为:

/// <summary>
/// Measurement units
/// </summary>
public enum MeasurementUnit
{
    Miles,
    Kilometers
}
于 2009-10-29T12:18:52.027 回答
0

这取决于你想在两点之间有什么样的差异。在地图上,我认为您不想要空中距离。然后你应该检查http://iosboilerplate.com/

如果您仍想使用空中距离,请使用核心位置。

于 2011-11-16T23:48:18.343 回答
0
- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

返回从接收器位置到指定位置的距离(以米为单位)。(在 iOS 3.2 中已弃用。使用 distanceFromLocation:

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
于 2013-11-25T15:02:10.810 回答