관리 메뉴

Hax0r

이용자 위치 정보에 따라 동적으로 맵 표기 본문

0x00 개발

이용자 위치 정보에 따라 동적으로 맵 표기

영준이 2017.09.03 21:56

문제

현재 개발하고 있는 시스템을 볼 때,  15분 이내 위치 정보가 업데이트 된 이용자가 Active User 라고 간주하고,

그 값이 총 10,000만건 이상이라 한다면 이 데이터 모두 맵에 바인딩 한다는 것은 실상 클라이언트 단에서  엄청 무리이며 서버 측에서도 불필요한 자원을 사용하는 것 이기에 그리 효율적인 방법이라 할 수 없다.

추가적으로 현재 내가 구현한 시스템에서 coordinate을 별도의 암호화 값으로 인코딩하고 있기에 질의시 본 값들을 전부 디코드해야하는 불필요한 자원을 사용해야한다. 이 불필요한 자원을 사용하는 이유는 한국 법 상 위치 정보값을 모두 암호화하여 저장하여야 하기 때문이다.

일전에 구글 개발자들과 2주간 협업할 수 있는 기회가 주어졌었는데 이 때도 이러한 위치 관련 시스템에서 아쉬움이 많다는 얘기를 들었었다. (이런 것 말고 다른 거나 좀 신경쓰시지..)


본론으로 돌아와서, 답은 간단하다.

현재 이용자가 보고있는 영역에 coordinate 를 구해, 그 값을 기준으로 쿼리 질의를 하면 된다.

하지만 이 보다 좀 더 나은 방도가 있지 않을까 고민하다 딱히 떠오르는 답이 없어서, Stack overflow 에 개발자들의 피드백을 받아보고자했다.




해결

받은 피드백 또한 같은 맥락의 방법이고 좀 더 상세하게 부연설명을 해줘서 고마웠다.

현재 질의하는 쿼리문은 아래와 같다.



select

latitude,

longitude

from

users

where

latitude between (user.latitude + n and user.latitude - n)

AND

longitude between (user.longitude + n AND user.longitude - n);





Google map javascript 문서를 참고하면, coordinate 관련하여 상세 내용이 있으니 참고하시면 도움 될 것 같다.

맵에 실질적으로 보여지는 각 point 의 coordinate 을 구하여 별도의 구비하 Rest api 의 질의를 하고 응답 값을 바인딩해주면 클라이언트 측에서의 역할은 끝난다.

매우 간단한 작업이라 점심시간 전에 끝난걸로 기억한다.

앞으로 좀 더 욕심이 있다면 현재 우리 시스템의 기사님들의 a -> b 까지의 목적지 또는 c, d, e 와 같은 경유지를 포함하여 실시간 바인딩하여 좀 더 생동감있는 지도로 변형하고 싶다. 본 작업은 구현한 알고리즘을 통해 선출된 기사님들이 실질적으로 생성된 오더와의 관계에 대해 가시적으로 확인하고자 간단히 만들어졌다.


저작자 표시 비영리 변경 금지
신고