上次写的滴滴打车软件小车平滑移动的demo,看到很多人在问我要例子;
最近有研究了下高德地图API;发现官网更新了api;
Marker类新增平移、旋转、缩放等动画效果;
这样的话我们实现平滑移动就非常方便了;马上上代码;
先看下效果图,这个是轨迹回放的;.
一下是主要代码实现;
public void startPalyback(View view){
aMap.clear();
index=0;
if(markerCar!=null){
markerCar.destroy();
markerCar =null;
}
if(polyline!=null){
polyline=null;
}
//创建移动车辆
markerCar = aMap.addMarker(new MarkerOptions().position(tracks.get(0)));
//创建轨迹线路
polyline = aMap.addPolyline(new PolylineOptions()
.add(tracks.get(0))
.add(tracks.get(0)));
index ++;
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
handler.sendEmptyMessage(100);
}
}, 1000);
}
private void moverCar(){
Animation animation = new TranslateAnimation(tracks.get(index));
animation.setDuration(1000);
animation.setInterpolator(new LinearInterpolator());
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart() {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd() {
// TODO Auto-generated method stub
if(index<tracks.size()){
moverCar();
}
}
});
markerCar.setAnimation(animation);
//markerCar.setPosition(tracks.get(index));//移动车辆
polyline.setPoints(tracks.subList(0, index));//显示轨迹
aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(tracks.get(index), aMap.getCameraPosition().zoom), 1000, null);
markerCar.startAnimation();
index++;
// if(index<tracks.size()){
// handler.postDelayed(new Runnable() {
//
// @Override
// public void run() {
// // TODO Auto-generated method stub
// handler.sendEmptyMessage(100);
// }
// }, 1000);
// }
}
最后附上例子,包含了之前写的地图聚合demo,一并发上;网友有好的方法欢迎提出;
demo点击下载