Я просто делаю веб-приложение, которое использует google maps api v3.
И требования к приложению должны вычислять расстояние между двумя заданными координатами.

Во-первых, нам нужны 2 координаты. Конечно, да?

Я использовал:



и

http://maps.google.com/maps/api/js

Зафиксировать вот так:

Получить текущие координаты по коду:

GMaps.gelocate({
success: function(position) {
var latlat = position.coords.latitude;
var longlong = position.coords.longitude;
var position = latlat + "," + longlong;
document.write(position);
},
error: function(error) {
alert('Lấy vị trí hiện tại thật bại: '+error.message);
},
not_supported: function() {
alert("Trình duyệt của bạn không hỗ trợ định vị Google Maps");
} });

Результат:

Сейчас беру координату любую, может быть: 21.025346,105.827571

Знаете ли вы формулу Хаверсина, читать дальше

// В рахханг кэш КМ
function HaversineInKM(lat1, long1, lat2, long2)
{
var dlong = (long2 — long1) * _d2r;
var dlat = ( lat2 — lat1) * _d2r;
var a = Math.pow(Math.sin(dlat / 2.0), 2.0) + Math.cos(lat1 * _d2r) * Math.cos(lat2 * _d2r) * Math. pow(Math.sin(dlong / 2.0), 2.0);
var c = 2.0 * Math.atan2(Math.sqrt(a), Math.sqrt(1.0 — a));
var d = _eQuatorialEarthRadius * c;
return d;
}

Теперь вы можете рассчитать расстояние между двумя координатами с помощью моего кода.

С PHP вы можете использовать:

общедоступная статическая функция HaversineInKM($position_1, $position_2){
$_eQuatorialEarthRadius = 6378.1370;
$_d2r = (pi() / 180.0);
$lat1 = Explosion(',', $ position_1)[0];
$long1 = взорвать(',', $position_1)[1];
$lat2 = взорвать(',', $position_2)[0];
$long2 = взорвать(',', $position_2)[1];
$dlong = ($long2 — $long1) * $_d2r;
$dlat = ($lat2 — $lat1) * $ _d2r;
$a = pow(sin($dlat / 2.0), 2.0) + cos($lat1 * $_d2r) * cos($lat2 * $_d2r) * pow(sin($dlong / 2.0), 2.0);
$c = 2.0 * atan2(sqrt($a), sqrt(1.0 — $a));
$d = $_eQuatorialEarthRadius * $c;
return $d;
}

УДАЧИ!