내 앱에서 위치 업데이트를 받고이를 데이터베이스에 저장하는 Service
이 있습니다. 또한 Fragment
은 데이터베이스에서 기록 된 모든 웨이 포인트 중 MapView
과 PolyLine
을 표시합니다.GPS 판독 값에서 PolyLine 트랙을 업데이트하는 더 나은 방법
녹음하는 동안은 새로운 웨이 포인트에 대해 Fragment
에 알리고 Fragment
은 PolyLine
을 업데이트 할 수 있습니다. 문제는 사용자가 앱에서 앱을 탐색 할 때 Service
은 데이터베이스에 웨이 포인트를 계속 기록하지만 Fragment
은 Fragment
이 일시 중지 된 이후에 업데이트되지 않습니다. 그래서 onResume
에서 새로운 PolyLine
을 만들고 데이터베이스의 모든 웨이 포인트를 읽고 데이터베이스에 추가하십시오.
이것은 모두 정상적으로 작동하지만 성능면에서 새로운 PolyLine
을 만들고 모든 웨이 포인트 (수천 개가 될 수 있음)를 다시 작성하는 것이 최적이라고 생각하지 않습니다. 나는 단지 PolyLine
에없는 새로운 웨이 포인트를 다시 추가 할 수 있다고 생각합니다. 그러나 여기에있는 다른 누군가가 대체 솔루션을 가지고 있는지 알고 싶었습니까? Fragment
을 "활성"상태로 유지하고 응용 프로그램이 백그라운드에서 실행 중일 때도 PolyLine
을 업데이트 할 수 있습니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 폴리 라인을 재 작성
감사합니다. 좋은 조언입니다. 내 위치 업데이트 수신기를 등록 할 때 이미 # 2를하고 있습니다 (기본값은 최소 10m). 직선 검출은 좋은 방법입니다. 구현 방법을 잘 모르는 경우입니다. 어떤 종류의 허용 오차가 필요합니다. – BadCash
@BadCash 그 방법을 생각해 볼 수있는 몇 가지 방법이 있습니다. 내가 생각할 수있는 가장 좋은 방법은 중간 점과 두 주변 점에 의해 생성 된 선 간의 거리를 계산하고 필요한 오차 마진으로 결정된 특정 값보다 작은 지 확인하는 것입니다. –
다시 한 번 감사드립니다 :) 그래, 갈 길이 멀다. 나는 또 다른 생각을했습니다 - AmB (m = 중간 점)에서 직선 경로 AB의 길이와 경로의 길이를 비교하면 첫 번째 경로가 직선 경로보다 특정 허용 오차 (더 긴 거리) 내에있는 경우 어떻게됩니까? 똑바로 간주 될 수 있습니까? – BadCash