将地理编码器结果从 Google 地图 API 传递到 Firebase 时接收 "Firebase.set failed"
Receiving "Firebase.set failed" when passing geocoder results from Google Maps API to Firebase
我正在尝试使用 Firebase 根据使用 Google 地图 Javascript API 的用户地址存储地理位置数据。然后,该数据将用于根据地理编码器函数返回的 lat/lon 在地图上创建新标记。但是,将函数的结果传递给 set()
时,我收到以下错误:
Uncaught Error: Firebase.set failed: First argument contains a function in property '0.geometry.location.lat' with contents: function (){return a}
如有任何帮助,我们将不胜感激。这是我到目前为止的代码:
function setMarkers(map) {
var marker;
var address;
var submit = document.getElementById("submit");
var fbase = new Firebase("myref");
var image = {
url: "images/pallette.png",
size: new google.maps.Size(45, 52),
origin: new google.maps.Point(0, 0),
}
submit.addEventListener("click", function () {
address = document.getElementById("address").value;
geocoder.geocode({ "address": address}, function(results, status) {
fbase.child("currentMarker").set(results);
if (status === google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: image
});
}
});
});
}
看起来 results
包含 geometry.location.lat
的函数,它作为 Firebase 的值无效(因为它只能存储 JSON)。我不太确定为什么会这样,但是 Google maps geocoding example on this page 也是如此。
尝试:
geocoder.geocode({ "address": address}, function(results, status) {
fbase.child("currentMarker").set(JSON.parse(JSON.stringify(results)));
当我在上面的页面上这样做时,它有效地将函数转换为它们的结果。由于这些都是有效的 JSON,它可以存储在 Firebase 中。
我正在尝试使用 Firebase 根据使用 Google 地图 Javascript API 的用户地址存储地理位置数据。然后,该数据将用于根据地理编码器函数返回的 lat/lon 在地图上创建新标记。但是,将函数的结果传递给 set()
时,我收到以下错误:
Uncaught Error: Firebase.set failed: First argument contains a function in property '0.geometry.location.lat' with contents: function (){return a}
如有任何帮助,我们将不胜感激。这是我到目前为止的代码:
function setMarkers(map) {
var marker;
var address;
var submit = document.getElementById("submit");
var fbase = new Firebase("myref");
var image = {
url: "images/pallette.png",
size: new google.maps.Size(45, 52),
origin: new google.maps.Point(0, 0),
}
submit.addEventListener("click", function () {
address = document.getElementById("address").value;
geocoder.geocode({ "address": address}, function(results, status) {
fbase.child("currentMarker").set(results);
if (status === google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: image
});
}
});
});
}
看起来 results
包含 geometry.location.lat
的函数,它作为 Firebase 的值无效(因为它只能存储 JSON)。我不太确定为什么会这样,但是 Google maps geocoding example on this page 也是如此。
尝试:
geocoder.geocode({ "address": address}, function(results, status) {
fbase.child("currentMarker").set(JSON.parse(JSON.stringify(results)));
当我在上面的页面上这样做时,它有效地将函数转换为它们的结果。由于这些都是有效的 JSON,它可以存储在 Firebase 中。