8

MapView如果 a仍在加载,有没有办法听?MapView因为我想在下载地图图块时显示进度指示器(例如沙漏) 。

有什么解决办法吗?

4

3 回答 3

4

您可以使用OnCameraChangeListenerandOnMapLoadedCallback来模拟这种行为。

从以下文档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
    }
}
于 2015-10-20T10:33:36.707 回答
2

MapView的onDraw文档说

“我们绘制地图背景(适当加载图块)”

您可以尝试扩展 MapView 并在 onDraw 完成时隐藏进度指示器。但我的猜测是 MapTiles 是异步加载的,因此您的进度条会在 MapTiles 全部加载之前完成。

于 2012-10-18T15:16:49.027 回答
0

在当前MapView实现中没有直接的 API 来执行此操作。

于 2012-10-18T15:09:59.763 回答