2016-02-08 45 views
2

我正在處理儀表板上的簡單地圖,該地圖註冊單擊事件並將位置保存到集合中,並且還會在單擊的位置上創建標記。但是,只有點擊的位置纔會被保存,並且標記不會顯示。這裏是我的代碼如下如何在流星中添加osm座標到我的收藏

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

我刪除了你的用戶ID和訪問令牌,因爲他們似乎是敏感 –

+0

這很可能與範圍在哪裏定義了map。嘗試在全局範圍內聲明'var map = null;',然後用'map = L.map..'替換'var map = L.map..'。 –

+0

感謝基督徒刪除我的用戶ID和訪問令牌,我不知道如何逃脫我。將嘗試建議的步驟。 – UncleT

回答

2

似乎有許多東西不對,但有一點可以肯定的是,你實際上並沒有設置緯度/經度的標記(它們是在你的代碼中都是「1」)。此外,您不需要再次登錄find。該文件已經給你的整體,所以你可以把你需要的字段:

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

我仍然遇到與未設置圖像路徑相關的代碼錯誤,但這可能是您不會看到或不知道如何解決的問題。 –

+0

感謝Christian,我錯誤地引用了文檔條目。感謝您的幫助。 – UncleT