"수동으로 CLLocation 호출"할 수 없습니다. 위치 업데이트를 시작하면 시스템에서 didUpdateLocations
메소드 호출을 시작합니다. 첫 번째 위치는 정확도가 떨어질 수 있습니다. 좋은 위치를 얻으려면 정확성을 확인하고 그것을 수락하기 전에 요구 사항을 충족하는 위치를 얻을 때까지 기다려야합니다.
아직 새 requestLocation
방법을 사용하지 않았으므로 처음 위치를 요청할 때 얻은 열악한 결과와 관련하여 어떻게 작동하는지 알 수 없습니다. 문서는 "위치 픽스는 desiredAccuracy 속성에 표시된 정확도 수준에서 얻습니다."라고 말하지만, startUpdatingLocations
도 원하는 정확도를 부여하며 처음 몇 번의 수치는 GPS가 꺼져있는 경우에 발생합니다. startUpdatingLocations
.
어쨌든 두 가지 방법 모두 didUpdateLocations
에 결과/결과를 호출합니다.
일단 위치를 얻으면 클로저/완료 처리기를 호출하려면 자신의 위치 관리자 싱글 톤을 만드는 것이 좋습니다. MyLocationManager
이라고합시다.
getLocation(completion:)
메서드를 제공하고 완료 블록을 만들 수 있습니다. 구현은 위치 업데이트를 시작하거나 requestLocation
을 호출합니다 (해당 메소드가 신뢰할 수있는 처음 위치를 제공하는 경우). 또한 (옵션) 인스턴스 변수에 완료 핸들러 클로저를 저장하지 않을 것입니다. MyLocationManager의 didUpdateLocations 구현에서 완료 핸들러를 확인한 다음 완료 핸들러가없는 경우 호출합니다.
나는 당신의 질문을 이해할 수 없다고 생각합니다. 어떤 완성 처리기에 대해 이야기하고 있습니까? LocationManager : didUpdateLocations :를 사용하여 위치 관리자가 위치 업데이트를 마쳤을 때를 알 수 있습니다. – AdamPro13