基于GPS输入动态更新Javafx节点



我开发了一个用于无线电的Javafx聊天应用程序。无线电提供全球定位系统的位置,我把它绘制在地图上。GPS更新和地图方法都有效,例如我可以在地图上正确绘制,但我不确定如何删除旧的GPS位置,只在用户移动时显示当前位置。可能只有3个名称变量(例如无线电(,但是名称的lat和long值会随着它们的移动而变化。欢迎对方法提出任何建议。提前谢谢。

public void addRadios(String name, double latval, double longitudeval) {
this.name = name;
this.latval = latval;
this.longitudeval = longitudeval;
Platform.runLater(new Runnable() {
@Override
public void run() {
if (!radionames.contains(name)) {
radionames.add(name);
MercatorMap mapinfo = new MercatorMap(900, 700);
xpoint = mapinfo.getScreenX((float) longitudeval);
ypoint = mapinfo.getScreenY((float) latval);
Circle radio = new Circle();
radio.setLayoutX(xpoint);
radio.setLayoutY(ypoint);
radio.setRadius(5);
radio.setFill(Color.BLUE);
pane.getChildren().add(radio);
radioCircles.add(radio);
}
}
});
}

我最终采取了一种简单的方法,它符合我的需求,如下所示:

public void addRadios(String name, double latval, double longitudeval) {
this.name = name;
this.latval = latval;
this.longitudeval = longitudeval;
if (!radionames.contains(name)) {
radionames.add(name);
}
if (name != null) {
updatePli(name, latval, longitudeval);
}
}
public void updatePli(String name, double latitude, double longditude) {
Platform.runLater(new Runnable() {
@Override
public void run() {
MercatorMap mapinfo = new MercatorMap(900, 700);
boolean old = false;
for (Circle radio : radioCircles) {
if (radio.getId().equals(name)) {
xpoint = mapinfo.getScreenX((float) longditude);
ypoint = mapinfo.getScreenY((float) latitude);
radio.setLayoutX(xpoint);
radio.setLayoutY(ypoint);
old = true;
}
}
if (!old) {
xpoint = mapinfo.getScreenX((float) longditude);
ypoint = mapinfo.getScreenY((float) latitude);
radio = new Circle();
radio.setLayoutX(xpoint);
radio.setLayoutY(ypoint);
radio.setId(name);
radio.setRadius(5);
radio.setFill(Color.BLUE);
pane.getChildren().addAll(radio);
radioCircles.add(radio);
}
}
});
}

}

最新更新