我正在制作仪表板上的简单地图,该地图记录点击事件并将位置保存到集合中,并在点击的位置创建标记。但是,只有点击的位置才会保存,标记不会显示。这是我的代码
Template.osm.onRendered(function(){
var map = L.map('osm-container', {
center: [6.54, 3.33],
zoom: 13
});
var markers = {};
var id;
L.tileLayer('http://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
attribution: 'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> — Map data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
subdomains: 'abcd',
id: 'REMOVED',
accessToken: 'REMOVED'
}).addTo(map);
var coordinates = {};
map.on('click', function(event) {
var randm = Math.ceil(10000*Math.random());
var entry = Coordinates.insert({
lat: event.latlng.lat,
lng: event.latlng.lng,
seq: randm });
id = entry;
});
Coordinates.find().observe({
added: function (document) {
L.marker({ lat: Coordinates.find({_id:id},{lat:1, _id:0}),
lng: Coordinates.find({_id:id},{lng:1,_id:0}) },{
clickable : true,
draggable: true,
keyboard: true,
riseOnHover: true
}).addTo(map);
map.on('dragend', function(event) {
todo
});
// markers[id] = mark;
},
changed: function(newDocument, oldDocument) {
// todo;
},
removed: function (oldDocument) {
// todo
}
});
});
请任何人帮忙
答案 0 :(得分:2)
似乎存在多种错误,但有一点可以肯定的是,您实际上并没有为标记设置lat / lng(它们在代码中都是“1”)。此外,您不需要再次find
。该文档已经全部提供给您,因此您可以获取所需的字段:
Coordinates.find().observe({
added: function (document) {
L.marker({ lat: document.lat,
lng: document.lng, }, {
...