【发布时间】:2017-11-04 08:56:41
【问题描述】:
我在我的网站上使用谷歌地图,基本上我想做的是在我的地图上显示标记,我从 Firebase 检索Drivers 的对象,然后我检索纬度和经度每个Driver 并将其显示在地图上。
所以我有两个问题:
1-每当每个Driver的经纬度变化时,我想更新他们在地图上的标记,不是所有的标记,只是那些得到的司机的标记他们的经纬度变了,我该怎么办?
2- 我知道 Firebase 中的 child_changed 返回已更改子项的快照,但如果假设同时更改了 100 个子项,会返回吗?所有 100 个孩子一次一个?
以下是我的一些代码示例:
此函数返回所有Drivers 并将它们显示为地图上的标记
function getDrivers(){
var database = firebase.database().ref().child('allDrivers');
database.on('value',function(snapshot) {
var array = [];
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
array.push(childData);
});
for (var i = 0; i < array.length; i++) {
var latlng = {lat: parseFloat(array[i].latPosition), lng: parseFloat(array[i].longPosition)};
var marker = new google.maps.Marker({
position: latlng,
map: map,
animation: google.maps.Animation.DROP,
icon:'img/goodambulance.jpg'
}); } });
这不是最佳实践,因为一旦孩子发生变化,它将返回allDrivers 节点中的所有孩子,我只希望它返回已更改的孩子,然后更新其在地图上的位置。
那么我应该对我的代码进行哪些更改呢?
【问题讨论】:
-
你能看看我的帖子吗? stackoverflow.com/questions/44538486/…
标签: javascript google-maps firebase firebase-realtime-database google-maps-markers