我正在使用Swing中的JMapViewer创建一个地图。我在地图上有几个表示汽车的MapMarkerDots。我试图更新这些标记的位置,以便它们看起来在地图上行驶,但它不太正常工作。我有一个“汽车”要遵循的坐标列表,但发生的情况是,位置被更新,但标记在完成之前不会重新绘制,这意味着标记是在初始位置和最终位置绘制的,而不是在两者之间的每一点绘制的。下面是我使用的代码。你知道为什么会发生这种情况吗?
public void drawRoute(String id){
MapMarkerDot mmd;
String evMarkerObject; // ID and Marker position
String[] items, locations;
double lat, lon;
for(int i = 0; i < route.length-1; i+=2){ // Iterate through the route
List markers = zmap.getMapMarkerList(); // Get the markers that are currently on the map
for(int j = 0; j < Daemon.evMarkers.size(); j++){ // Go through the list of recorded marker IDs and locations
evMarkerObject = Arrays.toString(Daemon.evMarkers.get(j)); // Get marker id and location
items = evMarkerObject.split(", "); // Split the ID and location
if(items[0].substring(1).equals(id)){ // If an ID match is found
locations = items[1].split(" "); // Split location values by " "
lat = Double.parseDouble(locations[2]); // Get latitude of marker
lon = Double.parseDouble(locations[3]); // Get longitude of marker
for(int k = 0; k < markers.size(); k++){ // Go through list of markers currently on map
mmd = (MapMarkerDot) markers.get(k); // Get each marker in turn
if((mmd.getLat() == lat) && (mmd.getLon() == lon)){ // Check if recorded position matches marker position
zmap.removeMapMarker(mmd); // Remove marker from the map
break; // Break from loop (appropriate marker found)
}
}
Daemon.evMarkers.remove(j); // Remove record of marker ID and position
zaddMarker(Color.BLUE, route[i], route[i+1], 'e', items[0].substring(1)); // Add marker at new position
//zmap.repaint();
}
}
}
调用函数(基于@Catalina的回答):
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>(){
@Override
protected Void doInBackground() throws Exception {
drawRoute(markerID);
return null;
}
};
worker.execute();
这是在鼠标单击事件上调用的。
守护进程
听起来像是一个后台线程,因此您需要使用SwingUtilities.invokelater
对事件调度线程(EDT)进行任何更新。如果这种方法有效,swingworker
可能是一种很好的方法,可以让守护进程
在worker的进程
方法中定期进行EDT更新。
这些是我找到的链接谷歌地图:移动标记和地图一起顺利与用户? 如何在Google Maps v2 android中平稳地移动当前位置标记
我使用Google Maps Android SDK在地图上添加标记,这些标记的位置存储在我的应用程序的所有用户都可以使用的Firebase数据库中。每个标记的数据存储在唯一的Firebase记录中,每个记录包含纬度 添加了一个新标记。 更改现有标记(移动到新位置和/或“验证”) 删除现有标记 我实现了一个哈希图,如如何使用Firebase Google Maps API Android中的数据更
用百度地图sdk实现简单的点击创建marker的功能。 在pc端实现了,并且无偏移(点击哪里就能哪里生成),但h5点击生成会有很大的偏移(无论是真机预览,还是f12的手机预览效果) 有大会知道怎么解决吗? pc 手机模拟(真机测过一样)
问题内容: 我正在从事类似于UBER,Lyft或OLA的项目。使用可用的移动汽车在家里进行地图。我正在寻找某种图书馆,可以像UBER一样使汽车平稳行驶和转弯。现在,我可以使用以下代码将汽车平稳地从一个纬度移动到另一个纬度。但是棘手的部分是转弯,并确保汽车在转向时朝前。 平稳行驶的汽车代码: 问题答案: 我最近遇到了相同的用例。这是我的解决方案。 首先,我要感谢@VipiN分享了“ The Movi