Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

高德地图-无论如何缩放、移动地图,都将大头针图标钉在地图中心位置

$
0
0

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 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>