好吧,我希望有人提供更好的答案,但是通过我所做的许多实验,我无法使用 animateCamera 获得像样的平滑滚动。
尽管仅将 Lat/Lng 更改为靠近的点,摄影师仍不断进行令人印象深刻的起飞和降落。
我通过以下例程获得了有限的“el-cheapo”动画成功:
private void animateTo(double lat, double lon, double zoom, double bearing, double tilt, final int milliseconds) {
if (mMapInstance==null) return;
mMapInstance.setMapType(paramMapMode);
mCurrentPosition=new LatLng(lat,lon);
// animate camera jumps too much
// so we set the camera instantly to the next point
mMapInstance.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(mCurrentPosition,(float)zoom, (float)tilt, (float)bearing)));
// give Android a break so it can load tiles. If I start the animation
// without pause, no tile loading is done
mMap.postDelayed(new Runnable(){
@Override
public void run() {
// keeping numbers small you get a nice scrolling effect
mMapInstance.animateCamera(CameraUpdateFactory.scrollBy(250-(float)Math.random()*500-250, 250-(float)Math.random()*500),milliseconds,null);
}},500);
}
该例程以 10000 秒的毫秒值调用,到达一个点,然后在随机方向上制作一个飞越动画,保持该死的缩放平静。由于像素值非常小,很可能所有内容都已缓存。
有人有更好的解决方案吗?尝试注入触摸事件来模拟“触摸”投掷是否合理或可能?