트러블슈팅 1020

sooj·2023년 10월 20일

최종

목록 보기
2/6

 override fun onMapReady(naverMap: NaverMap) {
        this.naverMap = naverMap
        // 현 위치
        naverMap.locationSource = locationSource
        // 현 위치 버튼 기능
        naverMap.uiSettings.isLocationButtonEnabled = true
        // 위치를 추적하면서 카메라도 같이 움직임
        naverMap.locationTrackingMode = LocationTrackingMode.Follow
        Log.d("sooj", "onmapready")

        // 줌
        naverMap.maxZoom = 20.0  // (최대 21)
        naverMap.minZoom = 5.0

        // Firebase
        val database = Firebase.database
        val locationRef = database.getReference("user_location")

        val userLocation = UserLocation(37.5665,126.9780) // 사용자 위도 경도

        fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext())
        if (ActivityCompat.checkSelfPermission(
                requireContext(),
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                requireContext(),
                Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            // TODO: Consider calling // 위치권한 없을 시
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return
        }
        fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
            if (location != null) {
                val lat = userLocation.latitude
                val lng = userLocation.longitude
                // 사용자 현재 위치 파베에 업로드
                val userLocation =
                    location?.let {
                        UserLocation(latitude = location.latitude, longitude = it.longitude)
                        locationRef.child(userId).setValue(userLocation)
                        Log.d("sooj", "${UserLocation(latitude = location.latitude, longitude = it.longitude)}")
                        Log.d("sooj", "${locationRef.child(userId).setValue(userLocation)}")
                        setMark(marker, lat, lng, com.naver.maps.map.R.drawable.navermap_default_marker_icon_blue) // 마커
                    }
            }
        }

        locationRef.setValue(userLocation) // userlocation 객체 파베 리얼타임에 저장

//        locationRef.child(userId).addValueEventListener(object : ValueEventListener {
//            override fun onDataChange(snapshot: DataSnapshot) {
//                val userLocation = snapshot.getValue(UserLocation::class.java)
//
//                if (userLocation != null) {
//                    val lat = userLocation.latitude
//                    val lng = userLocation.longitude
//                    setMark(marker, lat, lng, com.naver.maps.map.R.drawable.navermap_default_marker_icon_blue) // 마커
//                }
//            }
//            override fun onCancelled(error: DatabaseError) {
//                TODO("Not yet implemented")
//            }
//        })
    }
    



2

        locationRef.addValueEventListener(object : ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                for (snapshots in snapshot.children) {
                    val location = snapshots.getValue(UserLocation::class.java)
                    val userUid = currentUserId

                    if (userUid != null && userUid != currentUserId) // 마커 {
                        setMark(marker, com.naver.maps.map.R.drawable.navermap_default_marker_icon_blue)
                }
            }

            override fun onCancelled(error: DatabaseError) {}
        })

[오류]


FATAL EXCEPTION: main
Process: com.example.frompet, PID: 8965
kotlin.UninitializedPropertyAccessException: lateinit property fusedLocationClient has not been initialized
at com.example.frompet.ui.map.NaverMapFragment.onMapReady(NaverMapFragment.kt:149)
at com.naver.maps.map.e.d(SourceFile:143)
at com.naver.maps.map.MapView$4$1.run(SourceFile:198)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext())
주석처리 해둬서 오류난거 ~


3


        locationRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                for (snapshots in snapshot.children) {
                    val location = snapshots.getValue(UserLocation::class.java)
                    val userUid = snapshots.key // 사용자 uid

                    // 다른 사용자 위치 마커 표시
                    if (location != null && userUid != null && userUid != currentUserId) {
                        setMark(marker, location)
                    }

                }
            }

location 널처리 해줘야함 ~

profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글