Tôi muốn sử dụng công thức này với php. Tôi có một cơ sở dữ liệu với một số giá trị của vĩ độ và kinh độ được lưu.Công thức Haversine với php
Tôi muốn tìm, với giá trị vĩ độ và kinh độ nhất định trong đầu vào, tất cả khoảng cách (tính bằng km) từ điểm này với mỗi điểm trong cơ sở dữ liệu. Để làm điều này, tôi đã sử dụng công thức trên GoogleMaps api:
(6371 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat))))
Tất nhiên sử dụng trong php Tôi thay radian với deg2rad
.Công giá trị 37, -122 là những giá trị của tôi về đầu vào và lat, lng là những giá trị của tôi trong kho dữ liệu.
Dưới đây là mã của tôi. Vấn đề là có điều gì đó sai trái nhưng tôi không hiểu điều gì. Giá trị của khoảng cách là tất nhiên sai.
//values of latitude and longitute in input (Rome - eur, IT)
$center_lat = "41.8350";
$center_lng = "12.470";
//connection to database. it works
(..)
//to take each value in the database:
$query = "SELECT * FROM Dati";
$result = mysql_query($query);
while ($row = @mysql_fetch_assoc($result)){
$lat=$row['Lat']);
$lng=$row['Lng']);
$distance =(6371 * acos((cos(deg2rad($center_lat))) * (cos(deg2rad($lat))) * (cos(deg2rad($lng) - deg2rad($center_lng)))+ ((sin(deg2rad($center_lat))) * (sin(deg2rad($lat))))));
}
Đối với giá trị ví dụ: $ lat = 41,9133741000 $ lng = 12,5203944000
Tôi có đầu ra của khoảng cách = "4.826,9341106926"
Kiểm tra dấu ngoặc bạn –