Programing/JavaScript
Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기
리커니
2018. 11. 19. 18:04
반응형
Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기
WGS84 좌표계의 두 좌표 사이의 중앙에 좌표간 거리를 구해서 출력하는 방법을 알아보도록 하겠습니다.
GSP지도는 카카오(다음) 지도 기반입니다.
- 두 좌표의 중심점을 구하는 함수
function makeLengthInfo(data){
var iwContent = '';
var distanceArray = [];
data.reduce(function(a,b){
var d = [];
var position1 = new daum.maps.LatLng(Number(a.split('/')[0]),Number(a.split('/')[1]));
var position2 = new daum.maps.LatLng(Number(b.split('/')[0]),Number(b.split('/')[1]));
d.push(position1, position2);
var x = (Number(a.split('/')[0])+Number(b.split('/')[0]))/2;
var y = (Number(a.split('/')[1])+Number(b.split('/')[1]))/2;
var positions = new daum.maps.LatLng(x,y);
var infoWinArray = new daum.maps.InfoWindow({
position: positions,
zIndex:1,
content:(getDistanceFromLatLonInKm(d)/1000)+"Km"
}).setMap(map);
return b;
});
}
여기서 data의 포멧은 x+"/"+y 데이터가 있는 배열입니다.
두 좌표 사이의 중심 값은 (x1+x2)/2, (y1+y2)/2 로 구하는 것을 보실 수 있습니다.
사용된 reduce 함수에 대해서는 아래의 Link를 참고하세요.
* 단순히 두 좌표의 중심점은 x1 - x2 /2 로 구하시면 됩니다.
Link : javascript reduce 함수에 대해 알아보자 자바스크립트 reduce 함수, reduceRight 함수
- 두 좌표 사이의 거리를 구하는 함수
function getDistanceFromLatLonInKm(array) {
var lat1 = array[0].getLat();
var lng1 = array[0].getLng();
var lat2 = array[1].getLat();
var lng2 = array[1].getLng();
function deg2rad(deg) {
return deg * (Math.PI/180)
}
var r = 6371; //지구의 반지름(km)
var dLat = deg2rad(lat2-lat1);
var dLon = deg2rad(lng2-lng1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(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; // Distance in km
return Math.round(d*1000);
}
여기서 매개변수로 받는 배열은 makeLengthInfo 함수를 보시면,
var position1 = new daum.maps.LatLng(Number(a.split('/')[0]),Number(a.split('/')[1]));
var position2 = new daum.maps.LatLng(Number(b.split('/')[0]),Number(b.split('/')[1]));
다음지도의 포지션 값인 것을 확인하실 수 있습니다.
반응형