Open jw-choi-hyundai opened 3 years ago
@jw-choi-hyundai 해당 사항은 안드로이드 시뮬레이터를 이용하였을 경우에는 지도를 불러오는 속도가 느려서 검게 표시되는 것같습니다. 내부에서 안드로이드 단말기를 연결해서 보면 정상으로 표시되는데 안드로이드 단말기를 연결하셔서 확인해보시면 정상 표시될 것으로 판단됩니다.
exception건도 확인 부탁드립니다.
참고로 자체적으로 FusedLocationProviderClient를 통해 Location정보를 받아와 camera 이동을 시키면 시뮬레이터에서도 검은 화면이 표출되고 있지 않습니다.
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());
}
`
**아래 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