我在SQL咨询的距离计算和CLLocation
之间存在不一致。我怎样才能获得真正的距离?
使用此Swift代码的距离:334.599618308747 km
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 km
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获得实际距离?
答案 0 :(得分:1)
没有(真实)不一致。中的主导因素
Haversine formula
是地球半径,SQL公式中的3959
是(近似值)
半径英里,因此结果是207.9英里,
这是334.6公里。
如果您将3959
替换为6371
(公里中约为地球半径)
那么你应该得到与你的Swift代码相同的结果。