如何在流星中添加osm坐标到我的集合

时间:2016-02-08 20:36:26

标签: meteor leaflet openstreetmap

我正在制作仪表板上的简单地图,该地图记录点击事件并将位置保存到集合中,并在点击的位置创建标记。但是,只有点击的位置才会保存,标记不会显示。这是我的代码

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> &mdash; Map data &copy; <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 
        }
    });
});

请任何人帮忙

1 个答案:

答案 0 :(得分:2)

似乎存在多种错误,但有一点可以肯定的是,您实际上并没有为标记设置lat / lng(它们在代码中都是“1”)。此外,您不需要再次find。该文档已经全部提供给您,因此您可以获取所需的字段:

Coordinates.find().observe({
    added: function (document) {
        L.marker({ lat: document.lat,
                   lng: document.lng, }, {
              ...