在Google Maps标记上显示信息

时间:2018-12-17 10:13:56

标签: javascript android firebase google-maps firebase-realtime-database

我正在尝试获取保存在Firebase实时数据库中的信息,并使用Google Maps API将其显示在地图上。

这是我的火力发源地

firebase

这是我在地图上的标记

web map

现在它会打开并向用户显示当前位置,并使用Geofire将纬度和经度坐标同步到Firebase实时数据库。

现在,我可以从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.log(locationsRef);
    locationsRef.once('value', function(snapshot) {
      snapshot.forEach(function(childSnapshot) {
        var childKey = childSnapshot.key;
        var childData = childSnapshot.val();
        console.log(childData);
        var contentString = childData;
        var infowindow = new google.maps.InfoWindow({
          content: contentString
        });
        infowindow.open(map,marker);

      });
    });
  }

}

1 个答案:

答案 0 :(得分:1)

根据Firebase Document

您正在使用locationsRef.once,它只会通知您一次数据更改

我认为您必须使用ValueEventListener之类的东西,当发生任何更改时,它会通知您 在您的快照中