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);
}
}
}
解决方案
您需要发布代码以获得适当的支持!
也就是说,您是否考虑过简单地删除所有标记并为每次迭代同时再次绘制它们?
推荐阅读
- android - 如何使用 android room 自动插入链接的实体?
- java - ANDROID:如何将数据插入 JSON 文件并将其保存到本地存储?
- reactjs - 错误:捆绑失败:错误:找不到相对于目录“C:\\Users\\...”的预设“module:metro-react-native-babel-preset”
- azure-container-service - 我在哪里可以找到 aks made 集群上的节点公共 ip?
- c# - 混合现实 Unity 文件选择器
- javascript - 从动态表中获取字段值以保存在 localStorage - html 和 javascript
- javascript - 如何按字典值分组并存储到javascript中的列表中
- java - 在 Java 中处理未知数量的对象
- java - 如果原始 ApiFuture / ListenableFuture 失败或取消,Futures.transform() lambda 参数是什么
- reactjs - React js:Nivo饼图未显示