【发布时间】:2014-07-15 22:20:10
【问题描述】:
在我的 Android 项目中,Google 地图顶部有 300 多个标记。从屏幕截图中可以看出,它们是旧金山的车辆。 我有车辆的方向和速度,我想在下次调用 API 之前为它们设置 10 秒的动画。
要为一个标记设置动画,我使用以下代码:
static void animateMarkerToICS(Marker marker, LatLng finalPosition, final LatLngInterpolator latLngInterpolator) {
TypeEvaluator<LatLng> typeEvaluator = new TypeEvaluator<LatLng>() {
@Override
public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
return latLngInterpolator.interpolate(fraction, startValue, endValue);
}
};
Property<Marker, LatLng> property = Property.of(Marker.class, LatLng.class, "position");
ObjectAnimator animator = ObjectAnimator.ofObject(marker, property, typeEvaluator, finalPosition);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(ANIMATION_MILLIS);
animator.start();
}
当我为所有 300 个标记调用此方法时,地图正如预期的那样缓慢且响应不快。
问题是,同时为 300 个标记设置动画的最佳方法是什么? 有没有一种有效的方法来实现这项任务的良好性能?
(我在 Android > 4.0 上使用 Google Maps v2)
附言我不打算在地图完全缩小时运行动画,所以我可能永远不会同时移动所有 300 个标记,但我仍然希望获得有关解决此问题的最佳方法的反馈。谢谢!
【问题讨论】:
-
您找到解决方案了吗?像这样仅对单个标记进行动画处理,每秒会创建数千个内部对象 =(
-
@robsf 你能帮我看看你是如何调用这个方法的,以及你在其中传递了哪些值。这是我的代码:pastebin.com/yQZEZsf2
标签: android google-maps animation marker