Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setLocationTrackingMode 사용 시 Map Widget이 Dispose 된 이후에도 Location Tracking이 지속되는 이슈 #171

Open
stellar-studio opened this issue Jan 21, 2024 · 3 comments
Labels

Comments

@stellar-studio
Copy link

Future<void> _enableMyLocation() async {
    if(widget.myLocationEnabled == false) return;
    LocationPermission permissionStatus = await checkPermission();
    if(permissionStatus == LocationPermission.denied || permissionStatus == LocationPermission.deniedForever) return;

    try {
      NaverMapController controller = await widget.mapControllerCompleter.future;
      NLocationTrackingMode currentMode = await controller.getLocationTrackingMode();
      bool isMyLocationEnabled = currentMode != NLocationTrackingMode.none;
      if(isMyLocationEnabled) return;

      await controller.setLocationTrackingMode(NLocationTrackingMode.face);
      if(mounted) setState(() => _myLocationEnabled = true);
    } on Exception catch (e) {
      CustomLogger.logger.e(e);
    }
  }

사용자가 Button 터치 시 _enableMyLocation()를 실행시켜서 현재 위치를 볼 수 있도록
위와 같이 코드를 구성했는 데 아래 이슈를 발견했습니다.

1. setLocationTrackingMode(NLocationTrackingMode.face 또는 NLocationTrackingMode.follow) 로 활성화하고나서 맵을 조금이라도 움직일 경우 Widget dispose 후에도 LocationTracking이 종료되지 않음

2. setLocationTrackingMode(NLocationTrackingMode.face 또는 NLocationTrackingMode.follow) 로 활성화하고나서 맵을 움직이지 않을 경우 Widget dispose 시 LocationTracking이 정상 종료됨

3. setLocationTrackingMode(NLocationTrackingMode.noFollow) 로 활성화할 경우에는 어떤 상황에서도 Widget dispose 시 LocationTracking이 정상 종료됨

관련하여 문서의 '위치 추적 모드' 섹션 내용에 따르면,
" API나 제스처를 사용해 임의로 카메라를 움직일 경우 모드가 NoFollow로 바뀝니다. " 라고 안내되어있는 데 해당 기능과 관련된 이슈로 확인됩니다.

@note11g
Copy link
Owner

note11g commented Jan 21, 2024

안녕하세요. 이슈를 제보해주셔서 감사합니다.
혹시, 위치추적이 어떻게 종료가 되지 않는다는 것을 확인할 수 있는지 알려주실 수 있을까요?

@stellar-studio
Copy link
Author

stellar-studio commented Jan 22, 2024

안녕하세요.
NaverMap Widget 빌드 후
setLocationTrackingMode(NLocationTrackingMode.face) 또는
setLocationTrackingMode(NLocationTrackingMode.follow) 로 설정하고,
맵을 움직였다가 Navigator.pop() 하시면 확인할 수 있습니다.

아래는 버튼 터치 시 setLocationTrackingMode(NLocationTrackingMode.face) 로 설정한 것입니다.

Navigator.pop() 후에도 Location Tracking이 종료되지 않고 상태표시줄에 남아있는 것을 볼 수 있습니다.

아래는 버튼 터치 시 setLocationTrackingMode(NLocationTrackingMode.noFollow) 로 설정한 것입니다.

Navigator.pop() 후 Location Tracking(상태표시줄)이 정상 종료되는 것을 볼 수 있습니다.

@note11g
Copy link
Owner

note11g commented Jan 29, 2024

#173 이 구현되면, 해당 이슈는 해결될 것 같습니다.
따로 위치 추적 해제를 시켜 수정할 수도 있지만, 직접 구현하며 해당 이슈 역시 수정하는 편이 바람직해보입니다.
진척이 있다면, 코멘트로 다시 알려드리겠습니다. 감사합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: In progress
Development

No branches or pull requests

2 participants