好的,我希望有人能提供更好的答案,但是在我做过的许多实验中,使用animateCamera无法获得令人满意的平滑滚动。
即使只改变接近的点的Lat/Lng,摄像师仍然会进行惊人的起飞和降落。
我用以下程序有过有限的廉价动画成功:
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);
mMapInstance.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(mCurrentPosition,(float)zoom, (float)tilt, (float)bearing)));
mMap.postDelayed(new Runnable(){
@Override
public void run() {
mMapInstance.animateCamera(CameraUpdateFactory.scrollBy(250-(float)Math.random()*500-250, 250-(float)Math.random()*500),milliseconds,null);
}},500);
}
这个程序在以10000毫秒为值调用时,会前往一个点,然后在随机方向上进行飞越动画,同时保持缩放平稳。由于像素值非常小,很可能已经缓存了所有内容。
有没有更好的解决方案?尝试注入触摸事件以模拟“触摸”抛掷是否合理或可行?