Я пытаюсь получить информацию, которая хранится в базе данных реального времени firebase, и отобразить их на карте с помощью API Карт Google.
Это моя база
Это мой маркер на карте
Прямо сейчас он открывается и показывает текущее местоположение пользователей, а также синхронизирует широту и долготу координат с базой данных firebase в реальном времени с помощью Geofire.
Теперь я могу получать информацию из firebase и отображать ее на карте, но если я добавлю еще одного пользователя, информация останется прежней. Почему?
Это код, который у меня есть на данный момент:
// This Function will add/display that marker on the map
function AddDriver(data) {
var LatLng = new
google.maps.LatLng(parseFloat(data.val().lat),parseFloat(data.val().lng
));
var bounds = new google.maps.LatLngBounds();
var marker = new google.maps.Marker({
//title:service,
position:LatLng,
map: map
});
// Attach it to the marker we've just added
google.maps.event.addListener(marker, 'click', function() {
getData();
});
markers[data.key] = marker; // add marker in the markers
array...
document.getElementById("loc").innerHTML = loc_count;
function getData(){
var locationsRef =
firebase.database().ref('Locations/oEyL4QXg1XYAABIBGPvqYbzlNiv2');
console.info(locationsRef);
locationsRef.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
console.info(childData);
var contentString = childData;
var infowindow = new google.maps.InfoWindow({
content: contentString
});
infowindow.open(map,marker);
});
});
}
}
Согласно Документ Firebase
вы используете locationsRef.once
, который уведомит вас об изменении данных только один раз
Я думаю, вам нужно использовать что-то вроде ValueEventListener, которое уведомит вас, когда произойдут какие-либо изменения в вашем снимке