javascript - 与 Firebase 的协作实时 map 无法正常工作

标签 javascript google-maps firebase

我对 JS 和 Google Maps API 相当陌生。我正在尝试浏览 Google 提供的 here 基本教程来实时绘制 map 。我正在使用 Sublime Text 并将 html 和 .js 文件保存在我的服务器上。我已经设置了一个 Firebase 帐户并引用了它。我无法让 JavaScript 正确地将纬度和经度输入到我的 Firebase 数据库中。

这是我的 html 和 css:

<!DOCTYPE html>
<html>
  <head>
    <style type="text/css">
      html, body { height: 100%; margin: 0; padding: 0; }
      #map { height: 100%; }
    </style>
    <script src="https://cdn.firebase.com/js/client/2.2.1/firebase.js"></script>
  </head>
  <body>
    <div id="map"></div>

    <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=AIzaSyByiF_oXuIND_HKTnWb2EYjuHazdhi8F_k
        &libraries=visualization&callback=initMap">
    </script>
    <script src="map.js"> </script>
  </body>
</html>

这是我的 JavaScript:

 var firebase = new Firebase(
    "https://spatialform.firebaseio.com/# KDyLsffRQiYNSsPGBVW|77ec456e3f094217dc4cbe36f45256f4"
);

function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
    center: {
        lat: 39.6017,
        lng: -110.7970
    },
    zoom: 14,
    styles: [{
        featureType: 'poi',
        stylers: [{
                visibility: 'off'
            }] // Turn off points of interest.
    }, {
        featureType: 'transit.station',
        stylers: [{
                visibility: 'off'
            }] // Turn off bus stations, train stations, etc.
    }],
    disableDoubleClickZoom: false
});
map.addListener('click', function(e) {
    var marker = new google.maps.Marker({
        position: {
            lat: e.latLng.lat(),
            lng: e.latLng.lng()
        },
        firebase.push({
            lat: e.latLng.lat(),
            lng: e.latLng.lng()
        });
        map: map
    });
});

firebase.on("child_added", function(snapshot, prevChildKey) {
    var newPosition = snapshot.val();
    var latLng = new google.maps.LatLng(newPosition.lat,
        newPosition.lng);
    var marker = new google.maps.Marker({
        position: latLng,
        map: map
    });
});
}

我得到的只是基本 map 。我可以导航它,但仅此而已。

我错过了什么?

最佳答案

我在您的代码中遇到了 JavaScript 错误:Uncaught SyntaxError: Unexpected token 。

这无效:

var marker = new google.maps.Marker({
    position: {
        lat: e.latLng.lat(),
        lng: e.latLng.lng()
    },
    firebase.push({  // <---- error
        lat: e.latLng.lat(),
        lng: e.latLng.lng()
    });
    map: map
});

将对 firebase 的访问与标记构造函数分开:

map.addListener('click', function(e) {
  firebase.push({
    lat: e.latLng.lat(),
    lng: e.latLng.lng()
  });
  var marker = new google.maps.Marker({
    position: {
      lat: e.latLng.lat(),
      lng: e.latLng.lng()
    },
    map: map
  });
});

proof of concept fiddle

关于javascript - 与 Firebase 的协作实时 map 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36271276/

相关文章:

javascript - 需要同时在MAP上按多边形绘制美国各县

java - 如何在位置感知应用中多次使用 Google Places API?

javascript - FabricJS iText 从中心生长

javascript - 检查项目 Package::JSHINT 中的所有 JS 文件

javascript - 替换 async-await 到 then

python - Firebase 使用 float 作为键

java - Firestore 回收器适配器 - 滚动后项目消失

javascript - 如何使 JQuery 响应?

javascript - 具有多个地址的 Google map AngularJS

javascript - 仅当在触摸设备上触发 Dragend 时才会加载 Google map 图 block