我想在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/