반응형
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]));
다음지도의 포지션 값인 것을 확인하실 수 있습니다.
반응형
'Programing > JavaScript' 카테고리의 다른 글
JavaScript Blob 데이터로 이미지 URL 생성해 표출하기 (0) | 2019.04.09 |
---|---|
Javascript 객체 확대 축소 이동 라이브러리 Panzoom (0) | 2019.01.20 |
Javascript setInterval, clearInterval 함수의 즉시 종료에 대한 고찰, 해결방법 사용법 (1) | 2018.10.31 |
javascript 동적 멀티파일 업로드, 동적으로 선택된 파일 전달, ajaxForm 활용 fileList 컨트롤, dynamic file upload (2) | 2018.03.20 |
Tomcat Control character in cookie value or attribute. 원인 및 해결방법 (0) | 2018.03.09 |
댓글