Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Meteor中向Google地图添加新标记?_Javascript_Google Maps_Google Maps Api 3_Meteor - Fatal编程技术网

Javascript 如何在Meteor中向Google地图添加新标记?

Javascript 如何在Meteor中向Google地图添加新标记?,javascript,google-maps,google-maps-api-3,meteor,Javascript,Google Maps,Google Maps Api 3,Meteor,当我点击一个给定的位置时,我正在谷歌地图上添加标记。标记当前保存到集合(标记)和更经典的数组中。我现在想做的是在其他用户添加新标记时向地图添加新标记 我的问题是:当集合被修改时(例如,另一个用户添加了标记),是否有任何方法可以得到通知? 也许这不是最好的方法。还有其他建议吗 if (Meteor.isClient) { Template.hello.rendered = function(){ markersArray = []; var latlng = new goo

当我点击一个给定的位置时,我正在谷歌地图上添加标记。标记当前保存到集合(标记)和更经典的数组中。我现在想做的是在其他用户添加新标记时向地图添加新标记

我的问题是:当集合被修改时(例如,另一个用户添加了标记),是否有任何方法可以得到通知?

也许这不是最好的方法。还有其他建议吗

if (Meteor.isClient) {

  Template.hello.rendered = function(){

    markersArray = [];
    var latlng = new google.maps.LatLng(46.123, 8.843);
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function (position) {
        latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        map.setCenter(latlng);
      });
    }

    var opts = {
      zoom: 16,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map-canvas"), opts);

    // add a click event handler to the map object
    google.maps.event.addListener(map, "click", function(event)
    {
      placeMarker(event.latLng);
    });

    Session.set('map', true);

    function placeMarker(location) {

     var marker = new google.maps.Marker({
      position: location, 
      map: map
    });

     Markers.insert({"marker": location, "date": new Date()});
     markersArray.push(marker);
      }

}
}


你必须使用观察者

Template.hello.rendered = function(){


 Markers.find({}).observe({
  added: function (m) {

  // Add marker 

  }
 });
}

根据前面的回答,您应该使用
observe
结构,但您确实需要避免让观察者永远运行:

Template.hello.rendered = function() {
    this.markerObserve = Markers.find({}).observe({
        added: function(m) {
            placeMarker(m.location)  // obviously depends on the structure of Markers documents
        }
    });
};

Template.hello.destroyed = function() {
    this.markerObserve.stop();
}