我正在我的片段中加载Mapbox,当从DrawerLayout点击时,它将被启动。
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.map_fragment, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
bindUI(getView()); mapView = view.findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(map -> {
mapboxMap = map;
setUpMap();
});
}
@Override
public void onStart() {
super.onStart();
mapView.onStart();
}
@Override
public void onStop() {
super.onStop();
mapView.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
@Override
public void onDestroyView() {
super.onDestroyView();
mapView.onDestroy();
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
这是我用于在我的片段中使用Mapbox加载地图的代码。 每当我从抽屉布局更改片段时,黑屏会闪烁,然后加载地图。
如果我正在加载一些其他片段而不是Map片段,那么它完全正常。
提前致谢
答案 0 :(得分:0)
您可以使用" Map正在加载..."在Mapbox Map上并在onMapReady之后隐藏它,例如:
@Override
public void onMapReady(MapboxMap mapboxMap) {
mapLoadingOverview.postDelayed(new Runnable() {
public void run() {
mapLoadingOverview.setVisibility(View.GONE);
}
}, 1000);
}
XML
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<com.mapbox.mapboxsdk.maps.MapView
android:id="@+id/mapboxMapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
mapbox:mapbox_cameraTargetLat="53.873900"
mapbox:mapbox_cameraTargetLng="10.683876"
mapbox:mapbox_cameraZoom="15"
mapbox:mapbox_styleUrl="@string/mapbox_style_light" />
<TextView
android:id="@+id/mapLoadingOverview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/subwhite"
android:text="@string/mapOverlayText"
android:gravity="center"
android:textColor="@color/maincolor"
android:textSize="@dimen/mapOverlayTextSize"
android:visibility="visible" />
</FrameLayout>
答案 1 :(得分:0)
接缝在本地是不可能的,但是您可以根据mapBox的文档进行解决。
请参阅THIS DOC: Troubleshoot raster image with black background
为什么出现黑色背景:出现的黑色背景是 不包含任何数据的栅格图像的一部分。通常是 光栅图像是像素的矩形网格。工作时 对于非矩形的数据,网格内有像素 不包含任何数据。这些像素表示为NoData 表示没有数据。上传的GeoTIFF 到Mapbox Studio的显示为JPEG,以节省空间并制作地图 快速加载。由于JPEG无法显示透明度,因此NoData值 显示为黑色。
无法在其中更改NoData值的外观 Mapbox Studio ,,但是您可以使用两种策略来解决 Mapbox Studio之外的问题。首先,您可以使用 Mapbox GL JS 检索PNG而不是JPEG 。如果那行不通,您可以编辑 使用Rasterio的原始图像。