2016-06-07 84 views
0

我試圖計算兩公里點之間的距離,但它給我錯了。
Haversine不給我正確的結果

location.each do |loc| 
    distance = Haversine.distance(28.6139, 77.209, loc[:lat].to_f, loc[:long].to_f).to_km   
puts " #{distance}" 
end 


這是我得到的距離,這是錯誤的

7385.99072855455 
7383.795725224046 
7392.13122601482 
7391.537885880786 


位置的數據是在我的數據庫

[{"id":1,"lat":28.6139,"lng":77.209,"location":"","object_id":1,"created_at":"2016-06-07T05:46:53.000Z","updated_at":"2016-06-07T05:46:53.000Z","object_type":"abc"},{"id":2,"lat":28.6692,"lng":77.4538,"location":"","object_id":2,"created_at":"2016-06-07T05:49:23.000Z","updated_at":"2016-06-07T05:49:23.000Z","object_type":"cde"},{"id":3,"lat":28.4595,"lng":77.0266,"location":"","object_id":3,"created_at":"2016-06-07T05:50:22.000Z","updated_at":"2016-06-07T05:50:22.000Z","object_type":"ggg"},{"id":4,"lat":28.4744,"lng":77.504,"location":"","object_id":4,"created_at":"2016-06-07T05:50:24.000Z","updated_at":"2016-06-07T05:50:24.000Z","object_type":"eerr"}] 
+1

你是什麼意思的「錯誤」?它多少錢?也許在發佈之前刪除「sssssss」? –

+0

是的,我已經刪除sss,它應該是在50公里或比 –

+0

什麼是'loc'?它真的有符號作爲關鍵? –

回答

2

你有一個錯字:loc[:long] ins的loc[:lng] TEAD,該行應爲:

Haversine.distance(28.6139, 77.209, loc[:lat].to_f, loc[:lng].to_f).to_km 

您通過nil.to_f作爲_longitude第二點。這相當於通過0

+0

噢,非常感謝你 –

+0

很高興幫助。 –