Ngày nay, việc sử dụng google maps đã quá dễ dàng và thân thiện, và nó cũng được sử dụng trong nhiều mục đích khác nhau. Tất cả chúng đều dựa vào các toạ độ mà google cung cấp cho ta, một điểm google cho ta một dãy số ví dụ như (10.867849, 106.620332) nó được cách nhau bằng dấu (,) trước dấu (,) là toạ độ latitude, sau dấu (,) là toạ độ longitude. Vì một lý do gì đó các bạn cần tính khoảng cách giữa 2 điểm trên google các bạn sẽ làm thế nào trong PHP?

Sau đây mình xin chia sẽ một function nhỏ để thực hiện điều trên:

[php]

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2){
$theta = $longitude1 – $longitude2;
$miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$miles = acos($miles);
$miles = rad2deg($miles);$miles = $miles * 60 * 1.1515;
$feet = $miles * 5280;
$yards = $feet / 3;
$kilometers = $miles * 1.609344;
$meters = $kilometers * 1000;
return compact(‘miles’,’feet’,’yards’,’kilometers’,’meters’);
}

[/php]

Để sử dụng hàm trên ta có ví dụ sau:

Mình có 2 điểm như sau, và sẽ tính khoảng cách giữa 2 điểm này:

  • Thảo cầm Viên Sài Gòn(10.7861501,106.7049594)
  • Nhà thờ Đức Bà(10.7786746,106.6992025)

Chúng ta sẽ đưa 2 điểm này vào mảng:

[php]

$point1 = array(‘lat’ => 10.7861501, ‘long’ => 106.7049594);//Thảo cầm viên
$point2 = array(‘lat’ => 10.7786746, ‘long’ => 106.6992025);//Nhà thờ
$distance = $this->getDistanceBetweenPointsNew($point1[‘lat’], $point1[‘long’], $point2[‘lat’], $point2[‘long’]);
foreach ($distance as $unit => $value) {
echo $unit.’: ‘.round($value,2).'<br />’;
}

[/php]

Hàm này sẽ cho ra tổng cộng là 5 đơn vị tính khoảng cách, tuỳ nhu cầu sử dụng mà các bạn lấy ra, đương nhiên con số tính ra không hề đẹp, chúng ta có thể sử dụng các hàm trong PHP để làm tròn lại, ở đây mình sử dụng round(). Kết quả sẽ được như sau

[php]

miles: 0.65
feet: 3419.46
yards: 1139.82
kilometers: 1.04
meters: 1042.25

[/php]

[thongbao]

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

[/thongbao]

Tính khoảng cách giữa 2 điểm trong PHP