분명 카카오맵 설명에는 벡터 지도라고 써 놓았는데...
실제로는 비트맵 지도입니다. -_-;
비트맵 지도인 티가 나는 부분들을 보면...
맵을 불러올 때, 기존 다음맵처럼 바둑판 단위로 쪼개진 비트맵 이미지를 불러오고, 지도를 45도 돌려서 로딩시켜 보면 돌아간 바둑판이 그대로 보입니다. ㅋ
지도를 확대/축소를 할 때 새롭게 변화한 줌 비율로 이미지를 재 다운로드 하는데, 네트워크 속도를 느리게 하면
새로운 이미지를 다운로드 하기 전에 픽셀이 깍두기처럼 깨진게 보입니다. -_-; 벡터는 이런일이 없죠. 그 즉시 수학적으로 새로 그리니까..
그리고 최대 확대를 하면, 지도 각 구성요소의 계단현상이 그대로 보입니다. 심지어 이 계단 현상은 지도 회전을 하면 깍두기가 그대로 회전해서 유지됩니다. -_-!!!
그리고 도로명은 별도의 회전 라벨로 안만들고, 그냥 비트맵 이미지에 그려넣고 rasterize 해버렸더군요. -_-; 그래서 지도를 뒤집었을 때 도로명이 거꾸로 나와버립니다. 아무래도 도로의 path를 따라서 텍스트를 그려내는 api를 개발 안한 것 같네요.
지금 비트맵 지도 이미지와 분리된 요소로는 360도 방향으로 회전하는 라벨과, 비트맵 지도 위에 덧그려지는 건물의 외곽선(기울일때 Z축 방향으로 확장돼서 3D로 건물를 표현하는 기능) 이것 뿐입니다.
근데 이걸 왜 카카오측은 벡터 지도라고 하는지 모르겠어요. -_-; 이게 어딜봐서 벡터 지도..
(첨부된 이미지는 모두 지도를 회전시켰을 때 일어나는 현상입니다.)
벡터 지도면, 화면에 그려지는 이미지를 벡터로 그려야 됩니다. 지도를 죄다 비트맵으로 그려놓고 벡터지도라고 주장 하는게 이상한거죠.
왜 이걸 벡터라고 적어놓은지 모르겠어요. ㅋㅋ
물론 기능적으론 좀 그렇네요.
클라에서 벡터이미지 생성하는건 건물 3D그리는 부분밖에 안보여요.
모든 벡터 이미지를 서버에서 몽땅 비트맵화해서 저장하고 그것만 클라에 뿌리면, 그건 비트맵 지도라고 부르는 물건이 되는거죠.
왜 벡터 지도가 계속 비트맵 지도처럼 작동하는지..-_-);;
이미지타일맵 기반 지도(ex. 네이버지도앱)의 경우 미리 정해놓은 레벨 수(보통 13~14레벨)만큼 영역을 이미지타일로 잘라놓고 서버에 저장한 후, 앱에서 요청하는 화면과 레벨에 맞춰 이를 전송합니다. 따라서 지도화면에서 정해진 축척대로만 확대/축소가 됩니다.
그에 반해 카카오맵은 앱 화면에서 손가락으로 확대/축소하는 만큼 지도가 확대/축소되어 출력이 되지요. 표시되는 영역을 서버에서 벡터타일 방식으로 전송하고 이를 앱 내에서 확대/축소하는 걸 겁니다.
이미지타일 방식으로 현재 카카오맵처럼 지도를 표시하려면 현행 대비 2배 이상의 레벨 수로 타일링을 해야 할텐데, 지속적으로 변경되는 영역의 현행화를 고려해 볼 때 유지보수 부담이 너무 큽니다.
네트워크 속도를 느리게 해보시면 대놓고 티납니다. ㅋㅋㅋ
클라에서 벡터 확대/축소를 하면 항상 깔끔하게 표시되어야 하는데, 줌이나 회전할 때 비트맵 이미지 특유의 흔적이 나타나는건 벡터 지도치곤 매우 이상한 현상이죠.
카카오맵이 비트맵 지도 위에 3D 건물만 새로 그리고 있다고 적어놨습니다.
틸팅할 때 박스만 클라에서 그린다고 해서 비트맵 지도가 벡터가 되는건 아니죠.-_-;;
그냥 비트맵 지도 위에 3d블럭을 올려놓은 것 그뿐입니다.
이야기하시는 '비트맵 지도'의 정의가 정확히 무엇인지 모르겠는데, 제가 보기에 카카오맵은 벡터 지도가 맞습니다. 다만 앱이 벡터 데이타를 가지고 있는게 아니라, 서버에서 우리나라 전역에 대해 구축한 벡터 데이터를 타일로 쪼개 놓고, 앱에서 이 데이타를 받아서 화면에 표시해 주는 방식인 거지요.
보통 GIS 업계에서 비트맵 지도라고 하면 서버와 앱(클라이언트) 사이에 오가는 지도 데이타가 이미지 방식(JPG/PNG)인 것을 의미합니다. 앱에 표시되는 화면에서 건물의 외곽선이 깨진다고 비트맵 지도라고 하지는 않습니다. 지도가 포토샵도 아니구요.
몇년 전인지 잘 기억나진 않습니다만 예전 구글 지도에서 틸팅 기능을 지원했습니다. 그때는 이미지타일맵 방식이라 지도가 틸팅되면 바닥에 표시된 지도 이미지가 깨지는 게 표가 났습니다. 현재 카카오맵과는 확연히 달랐지요.
제가 말하는 요지는 클라이언트가 받아오는 데이터가 타일로 쪼개진 벡터 데이터가 아니라, 서버에서 이미 비트맵으로 rasterize 시킨 타일 이미지를 받아오고 있기 때문에 비트맵 지도라고 말하는 겁니다.
틸팅 기능에서 3d건물 그리는걸 비트맵이라고 말하는게 아니예요.
-> 앱 사용자가 요청하는 축척과 화면 각도, 3D 여부가 제각기 다른데, 그에 대해 서버에서 실시간으로 해당 영역을 비트맵으로 만들어 내려줄 수가 없습니다. 이 기술이 있었으면 진작에 떼부자 되었을거예요.
기존 다음지도와 네이버 지도가 그렇게 아주 오랬동안 서비스 해왔습니다.
지도 회전은 클라이언트에서 비트맵 이미지를 받은 후 회전시키면 그만이구요.
위에 첨부한 이미지에도 그 흔적들이 잘 나타나 있습니다.
그리고 3d 기울임 여부는 비트맵 평면 데이터와 아무 상관이 없습니다.
틸팅할 때 비트맵 지도는 그냥 평면을 기울이면 끝이예요. 클라에서 기울이는거죠.
그 지도 위에 3d박스를 클라에서 그려놓는다는 말인데, 왜 자꾸 이걸 이해 못하시나요.
건물 그리는 부분은 부루마블 같은 보드게임 생각하시면 됩니다. 비트맵으로 그려진 이미지 위에 3d블럭을 올려 놓을 뿐이예요.
지금 카카오맵의 기능은 비트맵 이미지 타일로 다 구현 되는 겁니다.
기존 다음지도와 네이버 지도가 그렇게 아주 오랬동안 서비스 해왔습니다.
-> 중요한 건 축척 개수(=몇 단계로 확대/축소할 것인가)지요. 지금 네이버지도와 카카오맵에서 일정 범위로 확대/축소해보시면 알테니 첫번째 리플로 대신하겠습니다.
지도 회전은 클라이언트에서 비트맵 이미지를 받은 후 회전시키면 그만이구요.
위에 첨부한 이미지에도 그 흔적들이 잘 나타나 있습니다.
-> 카카오맵 내에서 지도를 어떻게 표시하는지는 제가 알 수 없으니 패스합니다.
그리고 3d 기울임 여부는 비트맵 평면 데이터와 아무 상관이 없습니다.
틸팅할 때 비트맵 지도는 그냥 평면을 기울이면 끝이예요. 클라에서 기울이는거죠.
그 지도 위에 3d박스를 클라에서 그려놓는다는 말인데, 왜 자꾸 이걸 이해 못하시나요.
건물 그리는 부분은 부루마블 같은 보드게임 생각하시면 됩니다. 비트맵으로 그려진 이미지 위에 3d블럭을 올려 놓을 뿐이예요.
-> 그 3D 데이터, 즉 건물 외곽선의 폴리곤 정보와 층높이 정보가 바로 벡터 데이터입니다. (정확히 말하면 층높이는 속성정보가 되겠습니다만). 그 3D 데이터를 가지고 앱에서 지도 화면을 만들어서 표시해 주는 겁니다.
人在江湖님은 클라에서 그린 3d건물 하나만 가지고 벡터지도라고 말하는거잖습니까?
제가 처음 본문에서도 그랬고, 다른 리플에서도 계속 말하는 것이 건물 3D말고는 죄 비트맵이라고 말하는건 전혀 안보이시나봐요.
지도를 구성하는 타일이 비트맵이면 비트맵 지도입니다.
비트맵 타일에선 벡터 이미지의 장점을 전혀 이용할 수가 없어요.
그러니 비트맵 타일을 쓰면서 벡터 지도라고 하면 안되는 겁니다.
기울일 때, 클라에서 3d블럭으로 보기좋은 양념 쳤다고 해서, 비트맵 지도 데이터가 벡터 데이터로 변신하는건 아니죠. -_-;;
클라에서 그린 3D블럭은 그냥 보조로 덧대어 그린 것뿐이고, 밑에 깔려있는 지도는 여전히 비트맵이거든요.
[[ 보통 GIS 업계에서 비트맵 지도라고 하면 서버와 앱(클라이언트) 사이에 오가는 지도 데이타가 이미지 방식(JPG/PNG)인 것을 의미합니다. 앱에 표시되는 화면에서 건물의 외곽선이 깨진다고 비트맵 지도라고 하지는 않습니다. 지도가 포토샵도 아니구요. ]]
-------------------------------------------------------------------------------------
人在江湖님이 작성한 저 3번째 리플을 보시면 人在江湖님도 비트맵으로 전송된 지도는 비트맵 지도라고 이미 말하고 있습니다.
그리고 저는 단순히 건물의 외곽선이 깨지는걸 지적하는게 아니라, 외곽선의 모양이 비트맵이미지 특유의 패턴을 나타낸다는걸 말하고 있는겁니다.-_-;
외곽선 거친건 랜더링 방법의 차이일 뿐이지만, 카카오맵이 보여주는 저 패턴은 비트맵 이미지를 확대한 후 회전할 때만 나타나는 고유의 흔적이거든요. 벡터이미지는 저런식으로 나타나지 않죠. 벡터는 수치화된 데이터를 가지고 클라에서 직접 그려내거든요.
방향이라던지 속도계? 정도 ㅡ.ㅡ
만 해당되는거 같네요
지도를 벡터기반으로 그린다?
형이상학적인? 지형에 대한 수학적인 데이타 크기만 해도
비트맵 데이타 가져오는거만큼 할꺼같아요..ㅋ
왜 '벡터'라고 불렀는지 카카오가 설명 좀 해줬으면 좋겠어요.
from CV
400kbps로 로딩하는거 보면 구별이 가능합니다.
각 축척 이미지의 경계에서 까딱까딱 해보면..-_-;
게다가 서버에서 클라이언트로 벡터 형태의 맵데이터를 받아와서 화면에 그리는 과정을 거쳤다고 하더라도 보통 성능 등을 이유로 화면에 렌더링한 결과를 이미지로 캡쳐해서 관리합니다. 즉 확대나 축소, 회전시에 이미지가 깨질 수 있습니다.
벡터맵인지 이미지 기반 맵인지 구분하는 게 큰 의미가 없습니다. 클라이언트에서 보여주는건 거의 비슷하거든요. 다만 예전에는 글자같은 것도 지도 이미지에 다 박아넣어서 회전이나 확대시 글자도 엉망이 되었는데 이런건 데이터를 따로 관리해서 개선이 되었죠
축척별로 14단계로 준비한 비트맵 이미지를 서버에서 제공하고, 그 중간 단계는 비트맵 확대 알고리즘을 써서 확대하는겁니다.
그러기 때문에 비트맵 이미지가 깨지는게 보이는거죠.
화면에 유일하게 벡터로 그리는 객체가 있습니다. 건물은 3d객체라서 벡터인데, 비트맵이 깨지던 말던 상관없이 일관적으로 깔끔한 벡터이미지의 모습을 보여주죠.
자... 이제 다시 카카오맵을 보시면, 건물과 지도의 차이를 확연하게 느낄 수 있을껍니다.
그게 바로 비트맵과 벡터 이미지의 차이죠.
그리고 따지는게 왜 의미가 없습니까?
카카오맵이 '벡터맵'이라고 주장하고 있는데, 벡터 방식이 아니면 거짓말을 하는거니까 문제가 있죠.
화면 회전이나 확대 축소시 일시적으로 도트 보이는건 벡터 방식이든 비트맵이든 둘 다 똑같이 발생하는 현상이라서 이걸로 구분은 어렵고
타일 로딩할 때 한 번에 뜨지 않고 지형, 도로, poi들이 순차적으로 뜨는걸 봐서는 벡터 기반 맵 맞습니다.
만약 타일 단위로 한 번에 뜨면 이미지맵인지 벡터맵인지 구분이 어렵지만, 타일 안에서 순차적으로 뜨는건 벡터맵만 그렇기 할 수 있으니깐요.
다음지도 시절부터 지형도와 지도는 별도의 레이어이기 때문에 로딩 순서가 서로 달랐습니다.
어차피 둘 다 비트맵 데이터구요.-_-;
카카오맵의 지도 데이터는 비트맵 이미지로 저장되어 있습니다.
그래서 별도로 로딩이 불가능하죠. 한장의 그림이니까요. 여기서 분리된 건 건물과 라벨 뿐이예요.
그러니
- 지형표현(on/off가 가능한 별도 레이어)
- 지도(도로도 지도에 박혀있습니다. -_-)
- 라벨(라벨은 돌려야 하니 당연히 레이어가 다르죠.)
이 3 요소의 로딩 순서가 다른건 원래 당연한겁니다. 이걸 가지고 벡터라고 판단하는건 착각하시는거예요.
레이어가 나뉜 것을 벡터라고 하는게 아닙니다.
레이어는 비트맵/벡터를 가르는데에 아무런 영향도 안주는 요소예요.
레이어는 비트맵에서도 쓸 수 있고, 벡터에서도 쓸 수 있거든요.
벡터 이미지라는 것은 점과 선을 수학적 공식으로 이어가면서 그리는 이미지 방식을 말하는 겁니다.