Dzieńdobry.
Borykam się z aplikacją obliczającą odległość pomiędzy dwoma punktami (wg współrzędnych).
Znalazłem chyba gotowe rozwiązanie. Niestety jest napisane w JavaScript i nie potrafię przepisać tego do Pascala
http://www.barattalo.it/2009/12/26/decimal-degrees-conversion-and-distance-of-two-points-on-google-map/
function convertDecDeg(v,tipo) {
if (!tipo) tipo='N';
var deg;
deg = v;
if (!deg){
return "";
} else if (deg > 180 || deg < 0){
// convert coordinate from north to south or east to west if wrong tipo
return convertDecDeg(-v,(tipo=='N'?'S': (tipo=='E'?'W':tipo) ));
} else {
var gpsdeg = parseInt(deg);
var remainder = deg - (gpsdeg * 1.0);
var gpsmin = remainder * 60.0;
var D = gpsdeg;
var M = parseInt(gpsmin);
var remainder2 = gpsmin - (parseInt(gpsmin)*1.0);
var S = parseInt(remainder2*60.0);
return D+"° "+M+"' "+S+"'' "+tipo;
}
}
function distance(lat1,lon1,lat2,lon2) {
var R = 6371; // km (change this constant to get miles)
var dLat = (lat2-lat1) * Math.PI / 180;
var dLon = (lon2-lon1) * Math.PI / 180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1 * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
if (d>1) return Math.round(d)+"km";
else if (d<=1) return Math.round(d*1000)+"m";
return d;
}
O ile druga funkcja jest bardziej zrozumiała, o tyle poległem na pierwszej.
Czy jakaś dobra dusza orientująca się w JavaScript i Delphi/Pascal mogłaby spróbować mi pomóc?