计算两个 Lat/Long 点之间的距离不一致

Inconsistency in Calculating Distance Between Two Lat/Long Points

我在 SQL 咨询和 CLLocation 的距离计算之间存在不一致。我怎样才能得到真实的距离?

使用此 Swift 代码的距离:334.599618308747 公里

var latitude = 19.395039;
var longitude = -99.156203;

    var fromLocation = CLLocation(latitude: self.latitude , longitude: self.longitude)
    var toLocation = CLLocation(latitude: latitudeDestion , longitude: longitudeDestinaton)

    let distance = fromLocation.distanceFromLocation(toLocation)

距离SQL:207.91730456420444公里

SELECT id_gasolineria, 
   ( 3959 * acos( cos( radians(19.395039) ) * cos( radians( gasolinerias.latitud ) ) 
   * cos( radians(gasolinerias.longitud) - radians(-99.156203)) + sin(radians(19.395039)) 
   * sin( radians(gasolinerias.latitud)))) AS distance 
FROM gasolinerias 
ORDER BY distance;

如何使用SQL得到实际距离?

没有(真正的)不一致。的主导因素 Haversine formula 地球半径 ,SQL 公式中的 3959 是(近似值) 半径 英里 ,因此结果为 207.9 英里, 也就是334.6公里。

如果将 3959 替换为 6371(地球半径约为 公里 ) 那么你应该得到与你的 Swift 代码相同的结果。