我想在moveCamera完成后拍摄快照。

我将onCamerachange()和onMapLoaded()函数都用于Googlemap对象,

但是此回调处理程序的时间安排与我的 Intent 不符。

我想将相机移到想要的位置,并且在加载 map 完成后,想要进行快照。

你们知道谁我该怎么办?

谢谢你。

================================================== ==

+我的解决方案

实际上,我想实现JavaScript的Google Map API支持的tileloaded()回调函数。
但是结果是,没有功能可以完全完成该功能。

第一次加载 map 时,仅会调用一次OnMapLoaded()回调函数。

在加载所有图块之前,将调用OnCameraChanged()或OnCancallableCallback。

所以我像下面的源代码一样实现

...
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 10), this);
...
    @Override
public void onFinish() {
    mapFragment.getMapAsync(this);
}
..
    @Override
public void onMapReady(GoogleMap googleMap) {
    // TODO Auto-generated method stub
    mMap = googleMap;// Add a marker in Sydney and move the camera
    mMap.setOnMapLoadedCallback(this);
}

现在,当移动摄像机时,始终会调用onMapLoaded()。

谢谢大家。

最佳答案

您可以实现:

mMap.animateCamera(CameraUpdateFactory.zoomTo(16), 3000, new GoogleMap.CancelableCallback() {
            @Override
            public void onFinish() {
                //Here you can take the snapshot or whatever you want
            }

            @Override
            public void onCancel() {

            }
        });

此方法的最详细形式GoogleMap.animateCamera(cameraUpdate,duration,callback)提供了三个参数:

相机更新

CameraUpdate描述将相机移动到的位置。
打回来
实现GoogleMap.CancellableCallback的对象。这个用于处理任务的通用接口(interface)定义了两种方法onCancel()onFinished()。对于动画,在以下情况下将调用这些方法:

onFinish()

如果动画在不中断的情况下完成,则调用此方法。

onCancel()

如果通过调用stopAnimation()或开始新的摄影机运动中断了动画,则调用此方法。

另外,如果您调用GoogleMap.stopAnimation(),也会发生这种情况。

资料来源:Google Maps Android API Guides

关于android - 如何检测moveCamera在Google map 服务上是否完成?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33877621/

10-16 13:40