Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase和地图_Android_Google Maps_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 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

此应用程序我将用户的当前位置发送到firebase并显示在屏幕上。当我更新位置时,移除上一个标记时遇到问题

我使用了以下代码:

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我添加了问题的打印。谢谢,显然是对的,我会开车去实地测试。