본문 바로가기
JavaScript

[지도 API] leaflet-rotate.js 지도 회전

by amoomar 2025. 3. 18.
반응형

 

지도 오픈소스 라이브러리인 leaflet.js를 활용하여 개발을 진행하던 중, 지도를 회전해달라는 요구사항을 받게 되었는데

해당 기능을 구현하기 위한 추가 모듈을 찾던 중 leaflet-rotate.js를 알게 되어 사용 방법에 대해 포스팅해보았다.

 

목차


 

 

 

 

 

leaflet-rotate.js

leaflet.js 기반의 맵 상에서 객체 활용만으로는 지도의 회전은 불가능하다. 하지만 그런 기능의 수요는 있고, 그 수요를 위한 공급이 바로 leaflet-rotate.js이다. 말보다는 직접 데모를 확인해 보는 것이 빠르다.

 

https://raruto.github.io/leaflet-rotate/examples/leaflet-rotate.html

 

leaflet-rotate.js

Fly to bounds: CIRCLE POLYGON PATH Fly to: Kyiv London San Francisco Washington Trondheim Fit bounds (z = 0): RECTANGLE

raruto.github.io

 

 

 

 

적용 방법

외부망 환경인 경우 CDN 방식을 통해서 아래 태그를 <head>안에 배치함으로써 적용 가능하다.

<script src="https://unpkg.com/leaflet-rotate@0.2.8/dist/leaflet-rotate-src.js"></script>

 

 

혹시 내부망 환경이라면 브라우저 주소창에 위 src 경로를 입력, 내용 복사, 프로젝트파일에 신규 js생성, 붙여넣기, js 참조 순으로 적용 가능하다.

1. 주소창에 js경로 검색하여, 조회내용 ctrl+a 후 ctrl+c로 복사

 

 

2. js파일을 새로 만들어, 복사한 내용 붙여넣기

 

 

3. 2의 js파일을 활용할 jsp영역에서 참조 활용

 

 

 

 

 

 

활용 방법

우선 가장 중요한 내용은 map 객체 초기화 및 설정 시 rotate설정을 true로 적용해야한다는 것이다.

var map = L.map('map', {
  center: mwo.RKPC,
  zoomControl:false,
  rotate: true, // 회전 활성화
  scrollWheelZoom: false,
  dragging: false,
  keyboard: false,
  tap: false,
  doubleClickZoom:false,
  touchZoom: false,
  zoom: 11,
  controls: [],
  layers: [L.tileLayer(domainAddr + '/osm_tiles2/{z}/{x}/{y}.png'
          , {opacity: 0.6, maxZoom: 18, minZoom: 2}),
  ],
 });

 

 

그리고 setBearing함수를 적절히 활용하여, 원하는 이벤트 동작 시 회전각을 인수로 전달하면 된다.

map.setBearing(0)
map.setBearing(-45);

 

 

그럼 빙글빙글 돌아간다. 흰색 버튼을 클릭해서 마우스로 회전각을 직접 컨트롤 하는 것도 가능해진다!

 

 

 

 

 

 

 

 

 

혹시 rotate.js를 활용 하고나서부터 scrollWheelZoom의 false적용 설정이 무시된다면 다음 포스팅으로...오세요 .... ㅎㅎㅋㅋ

https://gkawjdgml.tistory.com/entry/leaflet-rotatejs-%EC%A0%81%EC%9A%A9-%EC%8B%9C-leafletjs-scrollWheelZoom-%EC%A0%9C%EC%96%B4-%EC%95%88%EB%90%A8#shiftKeyRotate_%EA%B0%92_%EC%A1%B0%EC%9E%91

 

leaflet-rotate.js 적용 시, leaflet.js scrollWheelZoom 제어 안됨

leaflet.js를 활용하여 개발을 진행하던 중, 지도의 회전을 위해 leaflet-rotate.js를 적용하게 되었는데 회전을 위한 코드 두 줄을 추가한 뒤 부터 map 객체의 scrollWheelZoom을 false로 적용하여도 계속 스크

gkawjdgml.tistory.com

 

반응형