如果标记不等于null,那么如何删除标记并创建一个新标记?

时间:2016-11-26 16:03:30

标签: android google-maps firebase

我的问题似乎多余,但我无法找到问题的确切答案。我有2个应用程序,一个是向Firebase发送位置的用户,第二个应用程序从firebase获取位置并创建标记。每当用户更改其位置时,标记不会更新最差,之前的标记仍然可以在地图上看到并添加了另一个标记。我该如何解决这个问题?为了进一步了解我的问题,这是我的代码。

这是第二个应用:获取位置

passRef = new Firebase(Config.FIREBASE_URL_PASSENGER);
        passRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

                    if (snapshot.child("latitude").exists() && snapshot.child("longitude").exists() && snapshot.child("destination").exists()) {

                        passUsername = snapshot.child("name").getValue().toString();
                        numOfPassenger = Integer.parseInt(snapshot.child("numberOfSeats").getValue().toString());
                        //getting the passenger's current location
                        locLatPass = Double.valueOf(snapshot.child("latitude").getValue().toString());
                        locLongPass = Double.valueOf(snapshot.child("longitude").getValue().toString());

                        dummyLocLatPass = Double.valueOf(snapshot.child("latitude").getValue().toString());
                        dummyLocLongPass = Double.valueOf(snapshot.child("longitude").getValue().toString());

                        if (locLatPass.equals("")) {
                            locLatPass = dummyLocLatPass;
                        }
                        if (locLongPass.equals("")) {
                            locLongPass = dummyLocLongPass;
                        }

                        latlngpass = new LatLng(locLatPass, locLongPass);

                        passLocMarkerOptions = new MarkerOptions();
                        passLocMarkerOptions.position(latlngpass);
                        passLocMarkerOptions.title(passUsername + "'s Location");

                        passLocMarkerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.pass_location));
                        passLocationMarker = mMap.addMarker(passLocMarkerOptions);

                    }

1 个答案:

答案 0 :(得分:1)

而不是

passLocationMarker = mMap.addMarker(passLocMarkerOptions);

你可以做到

if (passLocationMarker == null) {
    passLocationMarker = mMap.addMarker(passLocMarkerOptions)
} else {
    passLocationMarker.setPosition(latlngpass);
}

您还可以设置其他属性,例如标题或图标。