如果MapView
仍在加载,有没有办法听?因为我想在MapView
下载地图图块时显示进度指示器(例如沙漏)。
任何解决方案?
答案 0 :(得分:4)
您可以使用OnCameraChangeListener
和OnMapLoadedCallback
来模拟此行为。
来自GoogleMap.OnCameraChangeListener
的{{3}}:
public abstract void onCameraChange(CameraPosition position)
相机位置发生变化后调用。在动画期间, 可能不会通知该听众中间相机位置。它 总是在动画中调用最终位置。
这是在主线程上调用的。
来自GoogleMap.OnMapLoadedCallback
的{{3}}:
public abstract void 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
}
}
答案 1 :(得分:2)
MapView的onDraw文档说
“我们绘制地图背景(适当加载图块)”
您可以尝试在onDraw完成时扩展MapView并隐藏进度指示器。但我的猜测是MapTiles是异步加载的,所以你的进度条会在MapTiles全部加载之前完成。
答案 2 :(得分:0)
在当前的MapView
实施中,没有直接的API来执行此操作。