如何在 Meteor 中向 Google 地图添加新标记?
Posted
技术标签:
【中文标题】如何在 Meteor 中向 Google 地图添加新标记?【英文标题】:How can I add new markers to Google Map in Meteor? 【发布时间】:2014-06-02 15:26:18 【问题描述】:当我点击给定位置时,我目前正在谷歌地图上添加标记。标记当前保存到集合 - 标记 - 和更经典的数组中。我现在想要的是在地图上添加新的标记,因为它们是由其他用户添加的。
我的问题是:有没有办法在集合被修改时得到通知(例如另一个用户添加标记)?
也许这不是最好的方法。还有什么建议吗?
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);
【问题讨论】:
【参考方案1】:根据上一个答案,您应该使用observe
structure,但您确实需要避免让观察者永远运行:
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();
【讨论】:
【参考方案2】:你必须使用观察者
Template.hello.rendered = function()
Markers.find().observe(
added: function (m)
// Add marker
);
【讨论】:
以上是关于如何在 Meteor 中向 Google 地图添加新标记?的主要内容,如果未能解决你的问题,请参考以下文章