Android Firebase和地图
此应用程序我将用户的当前位置发送到firebase并显示在屏幕上。当我更新位置时,移除上一个标记时遇到问题 我使用了以下代码:Android Firebase和地图,android,google-maps,firebase,firebase-realtime-database,Android,Google Maps,Firebase,Firebase Realtime Database,此应用程序我将用户的当前位置发送到firebase并显示在屏幕上。当我更新位置时,移除上一个标记时遇到问题 我使用了以下代码: if (marker! = null) { marker.remove (); } 当我使用这段代码时,它看起来像一个1标记,其他标记从屏幕上消失 有人能帮我吗 @Override public void onDataChange(DataSnapshot dataSnapshot) { for (Da
if (marker! = null) {
marker.remove ();
}
当我使用这段代码时,它看起来像一个1标记,其他标记从屏幕上消失
有人能帮我吗
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot chatSnapshot: dataSnapshot.getChildren()) {
Localizacao localizacao = chatSnapshot.getValue(Localizacao.class);
Double latitude = localizacao.getLatitude();
Double longitude = localizacao.getLongitude();
String giro = localizacao.getGiro();
if (marker != null){
marker.remove();
}
Random rand = new Random();
int n = rand.nextInt(20);
marker = mMap.addMarker(new MarkerOptions()
.flat(true)
.position(new LatLng(latitude, longitude))
.rotation(Float.parseFloat(giro))
.anchor(0.5f, 0.5f)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_car))
.title(String.valueOf(n)));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
数据库映像:
打印:
我不熟悉firebase数据库,但如果我理解您的示例,那么您的数据库在任何时候都只有两行数据?当任何一个数据值被更改时,
dataSnapshot.getChildren()
会返回这两行吗
如果是这种情况,请尝试将mMap.clear()
放在foreach
循环之外。这样,所有标记(不幸的是,您添加的任何其他对象,如圆圈)都将从地图中删除
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Remove all markings from Map
mMap.clear();
// Now your foreach loop will pick up the two rows and add new markers to the map
for (DataSnapshot chatSnapshot: dataSnapshot.getChildren()) {
Localizacao localizacao = chatSnapshot.getValue(Localizacao.class);
Double latitude = localizacao.getLatitude();
Double longitude = localizacao.getLongitude();
String giro = localizacao.getGiro();
Random rand = new Random();
int n = rand.nextInt(20);
marker = mMap.addMarker(new MarkerOptions()
.flat(true)
.position(new LatLng(latitude, longitude))
.rotation(Float.parseFloat(giro))
.anchor(0.5f, 0.5f)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_car))
.title(String.valueOf(n)));
}
}
是否只有一个标记,您想删除它-然后在位置更新后添加另一个标记?@Barns52我想显示两个标记。如果我删除marker.remove();它通常会显示两个标记。问题是当位置正在更新时,是否会“跟踪”标记的旧位置?明白吗?如果谷歌翻译没有让我失败。您不想删除标记,只想继续添加标记,以便有一个标记的“路径”跟踪用户路径?@Barns52否,我只想显示两个标记及其当前位置,而不显示任何痕迹。@Barns52我添加了问题的打印。谢谢,显然是对的,我会开车去实地测试。