无法访问 Firestore 快照中的数据以将标记添加到存储在 Firebase 中的 Google 地图
Posted
技术标签:
【中文标题】无法访问 Firestore 快照中的数据以将标记添加到存储在 Firebase 中的 Google 地图【英文标题】:Can't access to data in firestore snapshot to Add Markers to Google Maps stored in Firebase 【发布时间】:2021-06-15 09:26:27 【问题描述】:我需要帮助访问 Firebase Firestore 快照中的数据,我需要纬度和经度。我在数据库和 Geopoint 中都有这两个字段。我可以在 console.log 中看到数据,但我无法访问单个值。到目前为止,我在这里尝试了不同的方法,使用 doc.latitude 或 doc.longitude 我没有收到错误,但也无法检索数据。
function initialize()
var latlng = new google.maps.LatLng(18.465733327729314, -69.93029399778331);
var myOptions = disableDefaultUI: true, zoom: 9, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP ;
var map = new google.maps.Map(document.getElementById("map"), myOptions);
db = firebase.firestore();
db.collection("GranSantoDomingo").get().then((querySnapshot) =>
querySnapshot.forEach((doc) =>
console.log(doc.id, "=>", doc.data());
var marker = new google.maps.Marker(
position: lat: parseFloat(doc.latitude), lng: parseFloat(doc.longitude),
map: map,
);
);
);
系统不让我发图,但是数据结构是这样的:
"location":"Geopoint(18.7611489,-69.0386113)",
"sector":"EL SEIBO I ",
"calle":"Av. MANUELA DIEZ ( EN LA GERENCIA)",
"latitude":"18.7611489",
"longitude":"-69.0386113"
【问题讨论】:
我的猜测是您试图在定义和填充它的回调之外访问marker
。数据库中的数据只能在回调内部的代码中使用,或者从那里调用。请参阅***.com/questions/64654873/…、***.com/questions/52488087/… 以及来自***.com/… 的更多信息
【参考方案1】:
知道了!获取元素的正确方法:
function initialize()
var latlng = new google.maps.LatLng(18.465733327729314, -69.93029399778331);
var myOptions = disableDefaultUI: true, zoom: 9, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP, zoomControlsEnabled: true,
LocationEnabled: true,
LocationButtonEnabled: true, ;
var map = new google.maps.Map(document.getElementById("map"), myOptions);
db = firebase.firestore();
db.collection("GranSantoDomingo").get().then((querySnapshot) =>
for (i = 0; i < querySnapshot.docs.length; i++)
var Latitude = (querySnapshot.docs[i].data().latitude);
var Longitude = (querySnapshot.docs[i].data().longitude);
var marker = new google.maps.Marker(
position: lat: parseFloat(Latitude), lng: parseFloat(Longitude),
map: map,
);
);
【讨论】:
以上是关于无法访问 Firestore 快照中的数据以将标记添加到存储在 Firebase 中的 Google 地图的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中捕获云 Firestore 文档快照错误
Flutter:将firestore快照转换为streambuilder中的列表