Google지도에서 Google지도 길 찾기를 쉽게 저장하고 다시 표시하고 싶습니다. A 지점에서 B 지점까지 Google의 DirectionsResult 객체에 경로 100 점이 있다고 가정 해 봅시다.이 경로를 저장할 수 있고 다음에 페인트 할 때이 점들을 모두 따라갈 수 있도록하고 싶습니다.전체 Google지도 경로 저장
사람들이 시도하는 방법은 전체 DirectionsResult 객체를 직렬화하여 데이터베이스에 저장하는 것입니다. 그런 다음 경로를 다시 그리기 위해 문자열을 다시 JSON.Parse로 보내고 DirectionsRenderer 객체로 전달하여지도의 경로를 렌더링합니다. 이 접근법에는 세 가지 문제가 있습니다.
1) 직렬화 과정에서 유형 정보가 손실되고 Google에서 객체를 최소화하므로 클래스 함수를 사용하여 이러한 값을 객체에서 안정적으로 가져올 수 없습니다. 먼저 데이터 접근 자 함수를 사용하여 객체를 처음 직렬화 할 때 '자리 표시 자'객체를 작성한 다음 나중에 직렬화 된 문자열을 구문 분석 할 때 Google Maps 객체를 다시 작성해야합니다.
2) 법적으로 모호합니다. Google지도 서비스 약관에 따르면 데이터를 영구 저장하지 않아도되며 다른 방법으로는이 방법이이를 위반하는 것으로 보입니다.
3) 오브젝트가 거대 할 수 있습니다. 하나의 라우트가 64KB를 넘었습니다.
경로에서 몇 포인트를 저장하고 Waypoints를 사용하여 다시 빌드하려고 시도했습니다. 이러한 종류의 작품이지만 무료 API에 대해 최대 8 점까지만 가질 수 있기 때문에 8 점 이상으로 많은 정확성을 보장하지는 않습니다. 또한, 사용자가 혼란스럽게 할 수있는 경로를 따라 웨이 포인트 마커를 칠합니다.
Google지도에서 정확한 경로를 저장할 수있는 방법이 있습니까? 아니면이를 방지하기 위해 의도적으로 고안된 API와 서비스 약관이 있습니까? 도와 주셔서 감사합니다.
우리가 해결 한 방법은 다음과 같습니다. "encoded_polyline"필드를 가져 와서 백엔드로 보냈습니다. 백엔드에서 포인트를 처리해야한다면 라인에서 찾은 루비 또는 다른 언어로 포팅하는 Google 폴리 라인 디코딩 알고리즘을 사용했습니다. 다음은 [python 버전] (http://code.google.com/p/py-gpolyencode/)입니다. 프런트 엔드에 폴리 라인을 표시해야하는 경우 폴리 라인을 프런트 엔드까지 보내고 [Google 지오메트리 도구] (https://developers.google.com/maps/documentation/javascript/3.exp)를 사용하십시오./reference # encoding)를 사용하여 디코딩합니다. – jargetz
물론이 단점은 경로를 폴리 라인으로 표시한다는 것입니다. 따라서 웨이 포인트를 갖고 싶으면 그 경로도 저장해야합니다. 경로를 편집 가능하게 만들고 싶으면 운이 없으면 새로운 길 찾기를 요청해야합니다. – jargetz
웨이 포인트가있는 마커가있는 경우'waypoints list' (또는'start'-'end' 포인트로'마커리스트') 순열을'database'에 현명하게 저장 한 다음, 같은 순서로 require 할 때마다 retive하고 pass 할 수 있습니다 시작 지점과 끝 지점으로 directionrender로 이동합니다. 지도에서 다시 경로를 그립니다. – bharat