docs: private void animateMarkerTo(final Marker marker, final double lat, final double lng) {
          final Handler handler = new Handler();
          final long start = SystemClock.uptimeMillis();
          final long DURATION_MS = 3000;
          final Interpolator interpolator = new AccelerateDecelerateInterpolator();
          final LatLng startPosition = marker.getPosition();
          handler.post(new Runnable() {
              @Override
              public void run() {
                  float elapsed = SystemClock.uptimeMillis() - start;
                  float t = elapsed/DURATION_MS;
                  float v = interpolator.getInterpolation(t);
  
                  double currentLat = (lat - startPosition.latitude) * v + startPosition.latitude;
                  double currentLng = (lng - startPosition.longitude) * v + startPosition.longitude;
                  marker.setPosition(new LatLng(currentLat, currentLng));
  
                  // if animation is not finished yet, repeat
                  if (t < 1) {
                      handler.postDelayed(this, 16);
                  }
              }
          });
      }