- 지도의 특정 위치 lat,lng 에 마커를 표기
- X의 lat, lng 를 기준으로 임의의 N 미터 원 그리기
- 마커와 원 사이에 가로로 평행한 직선 그리기
위의 순서대로 맵에 표출을 진행하는데,
마커와 원 사이에 원의 반지름 만큼의 직선을 그리고자 합니다.
현재는 좌표,거리 기준으로 새로운 좌표를 계산하여 선을 그리고 있으나,
실제 지도를 확대해보면 직선이 원보다 조금 작거나 큰 경우가 자주 발생합니다.
Q1. 마커를 기준으로 원의 반지름 크기와 동일한 직선을 그릴 수 있는지 궁금합니다.
Q2. 카카오 지도 거리계산할 때 R 값이 6371.01 이 아닌 것 같은데, R 값 몇으로 되어있는지 답변 가능하면 부탁드립니다.
A1. 가능합니다. 아래 코드에서 length
값이 반지름입니다.
var mapContainer = document.getElementById('map'),
mapOption = {
center: new kakao.maps.LatLng(33.450701, 126.570667),
level: 8
};
var map = new kakao.maps.Map(mapContainer, mapOption);
var length = 2000;
var circle = new kakao.maps.Circle({
center : new kakao.maps.LatLng(33.450701, 126.570667),
radius: length,
strokeWeight: 5,
strokeColor: '#75B8FA',
strokeOpacity: 1,
fillColor: '#CFE7FF',
fillOpacity: 0.7
});
circle.setMap(map);
var from = circle.getPosition().toCoords();
var to = new kakao.maps.Coords(from.getX() + length * 2.5, from.getY());
var linePath = [from, to]
var polyline = new kakao.maps.Polyline({
path: linePath,
strokeWeight: 5,
strokeColor: '#FFAE00',
strokeOpacity: 0.7,
strokeStyle: 'solid'
});
polyline.setMap(map);
A2. 구가 기준이 아니고 타원체 기준입니다.
장반경 6378137, 평편율 1 / 298.257223563 로 계산합니다.