RSS DEV 커뮤니티
팔로우
지도 작동 방식, 메르카토르, 타일, 그리고 GPS 핀
Google 지도와 같은 인터랙티브 지도는 두 가지 기본적인 수학적 개념을 기반으로 구축됩니다. 첫 번째는 지구의 구형 표면을 평평한 화면에 투영하는 방법입니다. 두 번째는 효율적인 로딩을 위해 이 평면 투영을 작고 관리 가능한 정사각형 타일의 그리드로 나누는 것입니다. 이러한 원리를 이해하면 지도 애플리케이션이 어떻게 작동하는지 명확해지고 정확한 위치 계산이 가능해집니다.
핵심 과제는 지구의 둥근 모양과 평평한 디스플레이를 조화시키는 것입니다. 이를 위해서는 경도와 위도를 화면 좌표로 변환하는 수학적 규칙인 지도 투영이 필요합니다. 대부분의 웹 지도는 각도를 보존하고 지역 모양을 유지하여 방향이 일관되게 유지되고 북쪽이 항상 위쪽에 있도록 하는 Web Mercator 투영을 사용합니다. 그러나 이 투영은 면적을 상당히 왜곡하여 극지방이 불균형적으로 크게 나타납니다.
Mercator 투영은 경도를 x축에 직접 매핑하여 지구를 평평하게 만듭니다. 그러나 위도는 적도 근처보다 극지방 근처의 영역을 더 많이 늘리는 로그 함수를 사용하여 변환됩니다. 이 로그 변환은 Mercator 투영이 작동하는 방식의 핵심입니다. 결과적으로 투영된 세계는 256x256 픽셀 타일의 쿼드트리 구조로 나뉩니다.
이 타일은 줌 레벨을 기반으로 계층적 시스템으로 구성되며, 각 타일은 줌 레벨과 x, y 좌표로 식별됩니다. 이 타일링 방식은 지도가 세계의 필요한 부분만 로드하도록 하여 부드러운 스크롤링과 상호 작용을 가능하게 합니다. 특정 위도와 경도를 해당 타일로 변환하는 공식이 있습니다.
`asinh(tan(lat))` 함수는 타일 그리드 시스템에 대해 정규화된 Mercator y 좌표를 나타냅니다. 이 계산의 소수 부분을 버리면 특정 타일을 식별할 수 있으며, 소수 부분은 해당 타일 내의 정확한 위치를 나타냅니다. 사용자가 지도를 드래그하면 애플리케이션은 화면에 보이는 타일을 계산하고 해당 타일을 가져옵니다.
사용자 위치를 나타내는 파란색 점은 이 프로세스의 직접적인 결과입니다. 장치의 GPS는 위도와 경도를 제공하며, 이는 동일한 Mercator 수학을 사용하여 투영됩니다. 시스템은 해당 타일을 결정하고 화면의 투영된 위치에 마커를 배치합니다. 이러한 기본 원리를 이해하면 불투명한 지도 인터페이스가 이해 가능한 시스템으로 변환됩니다.