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