首页 文章

将地理编码器结果从Google Maps API传递到Firebase时,接收“Firebase.set failed”

提问于
浏览
-1

我'm trying to use Firebase to store geolocation data based on a user'的地址使用Google Maps Javascript API . 然后,该数据将用于基于从地理编码器功能返回的纬度/经度在 Map 上创建新标记 . 但是,我将函数的结果传递给 set() 时收到以下错误:

未捕获错误:Firebase.set失败:第一个参数包含属性'0.geometry.location.lat'中的函数,其内容为:function()

任何帮助都将不胜感激 . 这是我到目前为止的代码:

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
        });
      }
    });
  });
}

1 回答

  • 1

    看起来 results 包含 geometry.location.lat 的函数,该函数作为Firebase的值无效(因为它只能存储JSON) . 我不确定为什么会这样,但_474849也是如此 .

    尝试:

    geocoder.geocode({ "address": address}, function(results, status)   {
      fbase.child("currentMarker").set(JSON.parse(JSON.stringify(results)));
    

    当我在上面的页面上执行此操作时,它会有效地将函数转换为结果 . 由于这些是有效的JSON,因此可以存储在Firebase中 .

相关问题