2016-11-26 4 views
0

Мой вопрос кажется излишним, но я не могу найти точный ответ на мою проблему. У меня есть 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

Вместо

passLocationMarker = mMap.addMarker(passLocMarkerOptions); 

Вы можете сделать

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

Вы также можете установить другие свойства, такие как название или значок ,

Смежные вопросы