- 두 좌표의 중심점을 구하는 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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;
});
}
|
cs |
여기서 data의 포멧은 x+"/"+y 데이터가 있는 배열입니다.
두 좌표 사이의 중심 값은 (x1+x2)/2, (y1+y2)/2 로 구하는 것을 보실 수 있습니다.
사용된 reduce 함수에 대해서는 아래의 Link를 참고하세요.
Link : javascript reduce 함수에 대해 알아보자 자바스크립트 reduce 함수, reduceRight 함수
- 두 좌표 사이의 거리를 구하는 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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);
}
|
cs |
여기서 매개변수로 받는 배열은 makeLengthInfo 함수를 보시면,
1
2
|
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]));
|
cs |
다음지도의 포지션 값인 것을 확인하실 수 있습니다.
출처: https://aljjabaegi.tistory.com/431 [알짜배기 프로그래머]