沿准备好的坐标动画标记移动。

时间:2016-01-16 09:08:05

标签: android google-maps

如果飞机标记沿着ArrayList集合中存储的坐标,我需要进行动画移动。我找到了解决方案,如何将标记从一个坐标移动到另一个坐标。以下是该方法的代码,它将其移动:

private void animateMarker(final Marker plane,
                           final LatLng toPosition,
                           final boolean hideMarker,
                           int currentIndex) {
    final Handler handler = new Handler();
    final long start = SystemClock.uptimeMillis();
    Projection proj = gMap.getProjection();
    Point startPoint = proj.toScreenLocation(plane.getPosition());
    final LatLng startLatLng = proj.fromScreenLocation(startPoint);
    final long duration = 2500;

    final Interpolator interpolator = new LinearInterpolator();

    handler.post(new Runnable() {
        @Override
        public void run() {
            long elapsed = SystemClock.uptimeMillis() - start;
            float t = interpolator.getInterpolation((float) elapsed / duration);
            double lat = t * toPosition.latitude + (1 - t) * startLatLng.latitude;
            double lng = t * toPosition.longitude + (1 - t) * startLatLng.longitude;
            plane.setPosition(new LatLng(lat, lng));

            if (t < 1.0) {
                handler.postDelayed(this, 16);
            } else {
                if (hideMarker) {
                    plane.setVisible(false);
                } else {
                    plane.setVisible(true);
                }
            }
        }
    });
    //Call the method which will start another animateMarker() 
    // after this thread is finished
    currentIndex++;
    if(currentIndex < theRoute.size()-1){
        movePlane(plane, currentIndex);
    }
}

当我尝试将对象从一个坐标移动到另一个坐标时,此方法非常有效,但我需要沿着坐标集移动它。正如您所知,在代码的最后我增加了&#34; currentIndex&#34; value,并调用movePlane方法,该方法接受标记的实例和新的索引值。混乱开始了,但让我告诉你代码:

private void movePlane(Marker plane, int index){
    if(currentCoordIndex < theRoute.size()){
        animateMarker(plane, theRoute.get(index), false, index);
    }
}

因此,平面标记从坐标到另一个混乱地来回移动,这是不可接受的。我想,当另一个未完成时,会调用新线程。也许,解决方案很简单,但我真的不知道该怎么做,我期待什么。

另外我需要将标记旋转到下一个点,你可以帮助我吗?

0 个答案:

没有答案