【发布时间】:2016-07-20 06:46:19
【问题描述】:
我正在创建带有多个标记的谷歌地图。现在我想在这些标记之间移动一个汽车图标。使用这个Move markers in google map v2 android
我可以将汽车图标从第一点移动到第二点。但它不会从第二点移动到第三点。当我为此使用 for 循环时,它会直接进入最后一点。我也添加了延迟,但没有其他效果我。
提前致谢。
这是我的代码::
public void setAnimation(GoogleMap myMap, final List<LatLng> directionPoint) {
anim_map = myMap;
anim_marker = myMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_icon))
.position(directionPoint.get(0))
.flat(true));
myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(directionPoint.get(0), 10));
if (directionPoint.size() >= 2) {
for (int i = 0; i < directionPoint.size() - 1; i++) {
h.post(new Runnable() {
@Override
public void run() {
animateMarker(anim_map, anim_marker, directionPoint, false);
}
});
}
}
}
private void animateMarker(GoogleMap myMap, final Marker marker, final List<LatLng> directionPoint,
final boolean hideMarker) {
final long start = SystemClock.uptimeMillis();
final long duration = 350000;
final Interpolator interpolator = new LinearInterpolator();
h.post(new Runnable() {
int i = 0;
@Override
public void run() {
long elapsed = SystemClock.uptimeMillis() - start;
float t = interpolator.getInterpolation((float) elapsed
/ duration);
// Log.e("T Location", t + "");
double lng = t * directionPoint.get(i + 1).longitude + (1 - t) * directionPoint.get(i).longitude;
double lat = t * directionPoint.get(i + 1).latitude + (1 - t) * directionPoint.get(i).latitude;
marker.setPosition(new LatLng(lat, lng));
if (t < 1.0) {
h.postDelayed(this, 1);
} else {
if (hideMarker) {
marker.setVisible(false);
} else {
marker.setVisible(true);
}
}
}
});
}
【问题讨论】:
标签: android google-maps