2 Koordinat Arası Mesafe Hesaplama (?)
-
40.0606628,28.2587015 gibi iki koordinat arası nasıl hesaplanır ?
http://www.mapdevelopers.com/distance_finder.php adam burda yapmış ama ben maps kullanmadan yapmak istiyorum.
Yani matematiksel bi formülü yokmu bunun ?
Not : Farklı bi çözüm sunarsanız, klasik asp çalışacağım bilginiz olsun.
#DirenKlasikASP
Erişilen Sayfalar :
http://www.inploid.com/t/google-map-api-ile-yol-tarifi-ve-uzaklik-hesaplamak-mumkun-mu/17961/
-
bi incele hocam var gibi bişiler
-
hsyN bunu yazdı
bi incele hocam var gibi bişiler
bu değildir inş. sıçtık :(
-
EnableTurk bunu yazdıhsyN bunu yazdı
bi incele hocam var gibi bişiler
bu değildir inş. sıçtık :(
Küresel coordinat tam olarak öyle hesaplanıyor :d birde dünya tam küre olmadığı için işler değişiyor
Dönüşüm yapacaksın normalde eksenlerin x,y,z iken
x=rcosθsinφ
y=rsinθsinφ
z=rcosφ
olacak onu araştır
yada en temizi hazırını bul :d
-
dlon = lon2 - lon1
dlat = lat2 - lat1
^ 2 + cos a = (sin (dlat / 2)) (lat1) * cos (lat2) * (sin (dlon / 2)) ^ 2
c = 2 * atan2 (sqrt (a), sqrt (1-a))
D = R * c (R Earth yarıçapı olduğu)şöyle bişey buldum enlem ve boylam ile böyle hesaplanıyormuş :D
-
Enlem ve boylam ile mesafe hesaplayan Javascript Kodu :
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
EnableTurk tarafından 22/Nis/14 11:11 tarihinde düzenlenmiştir -
static function distance($lat1, $lon1, $lat2, $lon2, $unit) { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K"){ return ($miles * 1.609344); }else if ($unit == "N") { return ($miles * 0.8684); }else if ($unit == "METRE") { $Metre = explode(".",($miles * 1.609344 * 1000)); return $Metre[0]; }else{ return $miles; } }
Benim Kullandığım Function bu İşini Görür -
<script>
function CalcDistanceBetween(lat1, lon1, lat2, lon2) {
//Radius of the earth in: 1.609344 miles, 6371 km | var R = (6371 / 1.609344);
var R = 3958.7558657440545; // Radius of earth in Miles
var dLat = toRad(lat2-lat1);
var dLon = toRad(lon2-lon1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
document.getElementById("result-distance").innerHTML= d;
return d;
}
function toRad(Value) {
/** Converts numeric degrees to radians */
return Value * Math.PI / 180;
}
</script>
<button onclick="CalcDistanceBetween(41.0305628,29.2587017,40.987968,28.6469719)" id="calc-dist">Calculate distance</button>
<output id="result-distance"></output>
bende bu şekilde az önce çalıştırdım hocam, ama seninki daha bi tatlı :)
eyvallah.
-
ASP ve diğer diller için :