오늘은 가장 먼저 매장을 클릭했을 때, 매장과 내 위치와 얼마나 거리가 먼가 계산을 해 보여주는 형식으로 진행을 할 예정이다.

    return NClusterableMarker(
      id: data.marketId.toString(),
      position: NLatLng(data.locationX!, data.locationY!),
      icon: state.markerIcons[data.majorCategory]!,
      size: Size(27.sw, 27.sh),
    )..setOnTapListener((_) {
        print('마커 클릭됨: ${data.marketId.toString()}');

        updateSelectedMarkerIcon(
          NLatLng(data.locationX!, data.locationY!),
          data,
        );
      });

저 프린트 문 위치에 마커를 클릭했을 떄, 발생하는 이벤트를 작성할 것이다.

그러면 가장 먼저 흐름도를 정의해보자

분기

  1. 사용자가 위치 권한을 허용했을 때,

  2. 사용자가 위치 권한을 허용하지 않았을 때,

    여기서 문제가 발생했다.

    flutter: 위도: 0.0 flutter: 경도: 0.0 flutter: 마커 위도: 36.9875058495892 flutter: 마커 경도: 127.941136968332 flutter: 거리: 13293.2km

사용자의 위치가 없는데 거리가 13293이 찍혀버린다..

그러면 서비스 파일에서

  //-------------------------------------------
  // 사용자의 위치와 클릭한 마커와의 위치 거리 계산      //
  //-------------------------------------------

  // 사용자의 위치와 클릭한 마커와의 위치 거리 계산
  double calculateDistance(NLatLng userLocation, NLatLng markerLocation) {
    if (userLocation.latitude == 0 || userLocation.longitude == 0) {
      return 0.0;
    } else {
      return userLocation.distanceTo(markerLocation);
    }
  }

위와 같이 조건문을 추가해서 사용자의 거리가 없으면 0으로 보여지게 하자

image.png

이제 0으로 받는 것을 확인 했으니

삼항 연산자부터 해결을 진행해보자