Я пытаюсь использовать Формулу расстояний Хаверсина (как здесь: http://www.movable-type.co.uk/scripts/latlong.html), но я не могу заставить ее работать, см. следующий код
function test() {
var lat2 = 42.741;
var lon2 = -71.3161;
var lat1 = 42.806911;
var lon1 = -71.290611;
var R = 6371; // km
//has a problem with the .toRad() method below.
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
alert(d);
}
И ошибка:
Uncaught TypeError: Object -0.06591099999999983 has no method 'toRad'
Я понимаю, потому что ему нужно сделать следующее:
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
Но когда я ставлю это ниже функции, он все равно возвращается с тем же сообщением об ошибке. Как заставить его использовать вспомогательный метод? Или есть альтернативный способ закодировать это, чтобы заставить его работать? Спасибо!