MapView
如果 a仍在加载,有没有办法听?MapView
因为我想在下载地图图块时显示进度指示器(例如沙漏) 。
有什么解决办法吗?
您可以使用OnCameraChangeListener
andOnMapLoadedCallback
来模拟这种行为。
从以下文档:GoogleMap.OnCameraChangeListener
公共抽象无效 onCameraChange(CameraPosition 位置)
在相机位置改变后调用。在动画期间,可能不会通知此侦听器中间摄像机位置。动画中的最终位置始终调用它。
这在主线程上调用。
从以下文档:GoogleMap.OnMapLoadedCallback
公共抽象无效 onMapLoaded ()
在地图完成渲染时调用。这只会被调用一次。如果您想再次收到通知,您必须请求再次回拨。
如那里所述,onMapLoaded()
只会被调用一次,因此策略可能是GoogleMap.OnMapLoadedCallback
每次onCameraChange
调用时都请求一个。
这是一个(非常简单的)示例来说明答案:
public class MapsActivity extends FragmentActivity implements OnCameraChangeListener, OnMapLoadedCallback {
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
googleMap = mapFragment.getMap();
googleMap.setOnCameraChangeListener(this);
}
@Override
public void onMapLoaded() {
//TODO: Hide your progress indicator
}
@Override
public void onCameraChange(final CameraPosition cameraPosition) {
googleMap.setOnMapLoadedCallback(this);
//TODO: Show your progress indicator
}
}
MapView的onDraw文档说
“我们绘制地图背景(适当加载图块)”
您可以尝试扩展 MapView 并在 onDraw 完成时隐藏进度指示器。但我的猜测是 MapTiles 是异步加载的,因此您的进度条会在 MapTiles 全部加载之前完成。
在当前MapView
实现中没有直接的 API 来执行此操作。