문제

나는 Google Maps API를 사용하여 위도/경도 쌍 사이의 거리를 지오코딩하여 휴대폰(현재 Android, iPhone에서 작동)에 가까운 사람들을 표시하는 애플리케이션을 가지고 있습니다.문제는 40명의 사용자로 구성된 테스트 그룹에서도 계산을 수행하고 결과를 사용자에게 다시 보내는 데 10초 이상이 걸린다는 것입니다.10초가 긴 시간처럼 들리지만 클라이언트 앱에서는 사람들의 위치가 실시간으로 업데이트되지 않기 때문에 실제로 문제가 되지 않습니다(업데이트는 몇 분마다 발생함).분명히 이것은 문제입니다. 왜냐하면 우리는 분명히 수만 또는 심지어 수십만 명의 사용자를 늘리기를 원하기 때문입니다.대용량 데이터의 지점 간 거리를 계산하기 위해 Google Maps API를 사용하는 것과 관련하여 이 분야에서 경험이 있는 사람이 있는지 궁금합니다.

여담으로, 우리는 모든 위치 계산이 이루어지는 서버에서 Rails를 사용하고 있습니다.전화기는 지도를 표시하고 위도/경도 좌표로 서버를 업데이트할 뿐입니다.

도움이 되었습니까?

해결책

살짝 살펴보세요 지오킷, 원하는 것 이상을 수행할 수 있는 Ruby Gem and Rails 플러그인입니다. 속도와 기능에도 매우 만족하실 것이라고 생각합니다.

다른 팁

위도/경도 좌표가 이미 있는 경우 거리를 계산하기 위해 Google 지도 API가 필요하지 않습니다.계산 대원 거리 Haversine 또는 Vincenty 공식을 사용하여 수행할 수 있습니다.

편집하다: 귀하의 문제를 올바르게 이해한다면(10,000개의 레코드에서 특정 위치에 가까운 위치 찾기) 이 목적으로 일부 지리 라이브러리를 사용하는 것이 좋습니다.더 많은 요청이 들어올 때 10,000개의 거리를 계산하는 것은 좋지 않은 생각입니다.이를 위해서는 확실히 더 똑똑한 알고리즘을 조사해야 합니다(쿼드 트리가 실용적으로 보입니다).

특정 영역을 다루는 경우 계산을 수행하기 전에 위도를 지역화된 등거리 투영으로 변환하는 것을 고려할 수 있습니다.또는 전 세계 지역을 포괄하는 경우 더 간단하게 위도를 가장 가까운 두 개의 UTM 구역으로 변환하고 두 개의 X Y 좌표 세트와 두 개의 UTM 구역 ID를 저장합니다.그런 다음 먼저 UTM 구역 일치에 대한 레코드를 선택하고 두 번째로 투영된 좌표를 사용하여 해당 하위 집합에 대해 계산을 수행할 수 있습니다(위도에서 거리를 계산하는 것보다 훨씬 빠릅니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top