如何同时移动多个标记

时间:2018-08-14 09:09:02

标签: android mapbox-android

我已经开发了一个android应用程序,该应用程序显示latlng将在locationchanged上保存到服务器的车辆附近,这将是jsonarray结果,我可以通过该结果通过动画在mapbox地图上添加标记将单个标记移到下一个更新的latlng值。更新后,我无法同时同时移动地图导航视图上显示的所有标记。标记一一移到更新的位置

HashMap<Integer, Marker> markerhash = new HashMap<Integer, Marker>();
if (json.getString("status").equalsIgnoreCase("success")) {
  Alllocations = json.getJSONArray("locations");
  for (int i = 0; i < Alllocations.length(); i++) {
    JSONObject LocInfo = Alllocations.getJSONObject(i);
    int id = LocInfo.getInt("user_id");
    if (markerhash.containsKey(id)) {
      marker = markerhash.get(id);
      marker.setIcon(icon);
      ValueAnimator markerAnimator = ValueAnimator.ofObject(new LatLngEvaluator(), (Object[]) new LatLng[] {marker.getPosition(), new LatLng(LocInfo.getDouble("latitude"), LocInfo.getDouble("longitude"))});

      markerAnimator.setDuration(2000);
      markerAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
      markerAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
          if (marker != null) {
            marker.setPosition((LatLng) animation.getAnimatedValue());
          }
        }
      });
      markerAnimator.start();

    } else {
      marker = navigationView.getMapboxMap().addMarker(new MarkerOptions()
        .position(new LatLng(LocInfo.getDouble("latitude"), LocInfo.getDouble("longitude")))
        .snippet(String.valueOf(LocInfo.getInt("user_id")))
        .icon(icon)
      );
      markerhash.put(id, marker);

    }
  }
}

1 个答案:

答案 0 :(得分:0)

您需要发布代码才能获得适当的支持!

那是说您是否考虑过简单地删除所有标记并为每次迭代同时绘制它们?