1.关键代码:
在移动或者缩放地图的动作结束时,都会进 onCameraChangeFinish 回调中,获取此时的相机坐标作为 Marker 的坐标。
aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
}
@Override
public void onCameraChangeFinish(CameraPosition cameraPosition) {
if (!isItemClickAction) {
locationMarker.setPosition(cameraPosition.target);
}
}
});
2.实现大头针的跳动动画:
/**
* 屏幕中心marker 跳动
*/
public void startJumpAnimation() {
if (locationMarker != null ) {
//根据屏幕距离计算需要移动的目标点
final LatLng latLng = locationMarker.getPosition();
Point point = aMap.getProjection().toScreenLocation(latLng);
point.y -= dip2px(this,125);
LatLng target = aMap.getProjection()
.fromScreenLocation(point);
//使用TranslateAnimation,填写一个需要移动的目标点
Animation animation = new TranslateAnimation(target);
animation.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float input) {
// 模拟重加速度的interpolator
if(input <= 0.5) {
return (float) (0.5f - 2 * (0.5 - input) * (0.5 - input));
} else {
return (float) (0.5f - Math.sqrt((input - 0.5f)*(1.5f - input)));
}
}
});
//整个移动所需要的时间
animation.setDuration(600);
//设置动画
locationMarker.setAnimation(animation);
//开始动画
locationMarker.startAnimation();
} else {
Log.e("ama","screenMarker is null");
}
}
作者:u010378579 发表于2016/12/28 13:39:22 原文链接
阅读:46 评论:0 查看评论