WRInaute discret
Bonjour,
Voici un petit Javascript qui vous permettra de calculer une distance entre deux GPoint(). Très utile quand on souhaite n'afficher que les markers dans un rayon de X km.
Exemple :
Bonne continuation...
Voici un petit Javascript qui vous permettra de calculer une distance entre deux GPoint(). Très utile quand on souhaite n'afficher que les markers dans un rayon de X km.
Code:
function LatLong(degLat, degLong) {
this.lat = LatLong.llToRad(degLat);
this.lon = LatLong.llToRad(degLong);
}
LatLong.llToRad = function(brng) {
if (!isNaN(brng)) return brng * Math.PI / 180;
brng = brng.replace(/[\s]*$/,'');
var dir = brng.slice(-1).toUpperCase();
if (!/[NSEW]/.test(dir)) return NaN;
brng = brng.slice(0,-1);
var dms = brng.split(/[\s:,°º′\'″\"]/);
switch (dms.length) {
case 3:
var deg = dms[0]/1 + dms[1]/60 + dms[2]/3600; break;
case 2:
var deg = dms[0]/1 + dms[1]/60; break;
case 1:
if (/[NS]/.test(dir)) brng = '0' + brng;
var deg = brng.slice(0,3)/1 + brng.slice(3,5)/60 + brng.slice(5)/3600; break;
default: return NaN;
}
if (/[WS]/.test(dir)) deg = -deg;
return deg * Math.PI / 180;
}
LatLong.distHaversine = function(p1, p2) {
var R = 6371;
var dLat = p2.lat - p1.lat;
var dLong = p2.lon - p1.lon;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(p1.lat) * Math.cos(p2.lat) * Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d;
}
Exemple :
Code:
startPoint = new LatLong(lat, lng);
endPoint = new LatLong(lat, lng);
var dist = LatLong.distHaversine(startPoint, endPoint); // exprimé en Km.
Bonne continuation...