Android:Google MapView在地图加载时显示进度指示器

Android:Google MapView在地图加载时显示进度指示器,android,google-maps,Android,Google Maps,如果a仍在加载,是否有办法侦听?因为我想在MapView下载地图分幅时显示进度指示器(例如沙漏) 有解决方案吗?在当前的MapView实现中,没有直接的API来实现这一点。MapView的文档说 “我们绘制地图背景(根据需要加载分幅)” 您可以尝试在onDraw完成时扩展MapView并隐藏进度指示器。但是我的猜测是,MapTiles是异步加载的,因此您的进度条将在MapTiles全部加载之前完成。您可以使用OnCameraChangeListener和OnMapLoadedCallback来模

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


有解决方案吗?

在当前的
MapView实现中,没有直接的API来实现这一点。

MapView的文档说

“我们绘制地图背景(根据需要加载分幅)”


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

您可以使用
OnCameraChangeListener
OnMapLoadedCallback
来模拟这种行为

从Google地图的

摄影机更改上的公共摘要无效(摄影机位置)

相机位置更改后调用。在动画中, 此侦听器可能不会收到中间摄像机位置的通知。信息技术 始终为动画中的最终位置调用

这是在主线程上调用的

从Google Map.OnMapLoadedCallback的

加载时公共摘要无效()

当贴图完成渲染时调用。这只会被称为 一旦如果希望收到通知,则必须请求另一次回调 再说一遍

如前所述,
onmapload()
将只被调用一次,因此策略可以是每次调用
onCameraChange
时请求一个
GoogleMap.onmaploatedcallback

下面是一个(非常简单)的例子来说明答案:

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
    }
}

嘿,你找到什么新的解决方案了吗?我不抱歉,已经好几年没有做任何Android开发了。这肯定是我想要的。调用
onmapload()
似乎花费了太多时间,但这是因为映射加载了所有位置,等等。这绝对是正确的API。非常感谢。应该是IMHO接受的答案。