Playmap-HAE / Playmap-developers

Playmap Developers
0 stars 0 forks source link

Tracking Mode 이슈 #5

Open jw-choi-hyundai opened 3 years ago

jw-choi-hyundai commented 3 years ago

**아래 Tracking mode test의 경우 Sample (zip) source를 통해 진행하였습니다.

mapView.setTrackingMode(true) --> Tracking mode true로 할 시 Map이 중간 중간 검은 화면 처럼 로딩이 되어지지 않습니다. (이슈 사진 필요 시 메일이나 메신저 보내주세요 github 업로드 불가)

mapView.setTrackingMode(false) --> Tracking mode true로 하지 않고 false로 바로 변경 시 아래와 같은 오류 발생 됩니다. Null point exception handling이 안되어있는 것으로 보이네요..

2020-11-23 17:20:24.082 16289-16289/com.mapbox.p21maptest E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mapbox.p21maptest, PID: 16289 java.lang.NullPointerException: Attempt to invoke virtual method 'double com.hmns.playmap.PlayMapPoint.getLongitude()' on a null object reference at com.hmns.playmap.PlayMapView$6$1.onStyleLoaded(PlayMapView.java:1194) at com.mapbox.mapboxsdk.maps.MapboxMap.getStyle(MapboxMap.java:111) at com.hmns.playmap.PlayMapView$6.onMapReady(PlayMapView.java:1183) at com.mapbox.mapboxsdk.maps.MapView.getMapAsync(MapView.java:1062) at com.hmns.playmap.PlayMapView.drawTracking(PlayMapView.java:1180) at com.hmns.playmap.PlayMapView.setTrackingMode(PlayMapView.java:1172) at com.mapbox.p21maptest.MainActivity.clickMenuItem(MainActivity.java:666) at com.mapbox.p21maptest.MainActivity.access$500(MainActivity.java:72) at com.mapbox.p21maptest.MainActivity$9.onGroupClick(MainActivity.java:633) at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:684) at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:662) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3179) at android.widget.AbsListView$3.run(AbsListView.java:4097) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 2020-11-23 17:20:24.157 16289-16289/com.mapbox.p21maptest I/Process: Sending signal. PID: 16289 SIG: 9

Playmap-HAE commented 3 years ago

@jw-choi-hyundai 해당 사항은 안드로이드 시뮬레이터를 이용하였을 경우에는 지도를 불러오는 속도가 느려서 검게 표시되는 것같습니다. 내부에서 안드로이드 단말기를 연결해서 보면 정상으로 표시되는데 안드로이드 단말기를 연결하셔서 확인해보시면 정상 표시될 것으로 판단됩니다.

jw-choi-hyundai commented 3 years ago

    private static final int UPDATE_INTERVAL_MS = 500;
    private static final int FASTEST_UPDATE_INTERVAL_MS = 1000;
    private FusedLocationProviderClient mFusedLocationClient;

   private void setMyLocationCallback() {
        //1. FusedLocationClient를 사용하기 위한 request 속성 (얼마나 자주 위치를 가져올거냐, 가져오는 간격은 얼마나 할 것이냐 등)
        LocationRequest locationRequest = new LocationRequest()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(UPDATE_INTERVAL_MS)
                .setFastestInterval(FASTEST_UPDATE_INTERVAL_MS);

        //2. 위치가 변경 시마다 이벤트 발생하는 callback !!여기서 위치 변경시 마다 onLocationResult가 호출됨!!
        LocationCallback locationCallback = new LocationCallback() {
            @Override
            public void onLocationResult(LocationResult locationResult) {
                super.onLocationResult(locationResult);
                List<Location> locationList = locationResult.getLocations();

                if (locationList.size() > 0) {
                    mCurrentLocation = locationList.get(locationList.size() - 1);
                    mCurrentLatLng = new LatLng(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
                    mCurrentPoint = new PlayMapPoint(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
                    //Log.d(TAG, "Latitude = " + mCurrentLatLng.latitude + " /Longitude = " + mCurrentLatLng.longitude);

                    //Add my position circle in map
                    drawMyLocationImage();

                    //위치값에 따른 Camera 이동
                   mPlayMapView.getMapboxMap().setCameraPosition((new com.mapbox.mapboxsdk.camera.CameraPosition.Builder())
                            .target(new LatLng(mCurrentPoint.getLatitude(), mCurrentPoint.getLongitude()))
                            .zoom(14).build());
                }
            }
        };

        // Call back 등록 함수 (위에 1번 2번을 FusedLocationClient에 등록하면 이벤트가 발생됨)
        mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.myLooper());
    }

`