2013-10-06 41 views
1

我的基於mapbox.js的地圖的數據源位於Google雲端硬盤上的電子表格中。實際上,我使用Geo for Google Docs將位置導出到GeoJSON和Leaflet.markercluster以在地圖上顯示它們。將Google Spreadsheet加載到可見的小冊子中

我需要直接從Google Drive加載寄存器,所以更改會立即反映出來而不導出數據。 mapbox.js API有不同的方法來滿足這個要求,但它們都不適用於我。所以我的問題是(A),其中哪些是首選之一,(B)我怎樣才能使這一工作:

  1. markerLayer.loadURL()梅索德加載和顯示GeoJSON的數據,但我無法弄清楚如何直接到以GeoJSON格式訪問Google雲端硬盤文件,而不必先導出它。

  2. 我試圖用jQuery getJSON方法,但回調不會調用定義的函數:

    $.getJSON("https://spreadsheets.google.com/feeds/list/KEY/od6/public/basic?alt=json-in-script&callback=loadMarkers"); 
    
  3. markerLayer.setGeoJSON():我出版的電子表格爲CSV並使用csv2geojson將其轉換爲以GeoJSON與之相似,以Loading CSV into Markers例子。使用以下代碼,我得到一個TypeError:t是mapbox.js第5行的未定義錯誤

    $.ajax({ 
        url: 'https://docs.google.com/spreadsheet/pub?key=KEY&output=csv', 
        success: function csvLoad(csv) { 
         markerLayer.setGeoJSON(csv2geojson.csv2geojson(csv, function(err, data) { 
         })); 
        } 
    }); 
    

感謝您的幫助。

回答

2

查看recline.js,一個用於構建數據應用程序的庫。它有一個谷歌文檔的數據源,使您可以從電子表格使用谷歌文檔JSON API這樣寫着:

recline.Backend.GDocs.fetch({ 
    url: 'https://docs.google.com/a/okfn.org/spreadsheet/ccc?key=0Aon3JiuouxLUdDlGV2lCakoydVh1U014cHRqcXpoWVE#gid=0' 
}) 
    .done(function(result) { 
    // structure of result is below 
    console.log(result); 
}); 

更多細節和例子在https://github.com/okfn/recline.backend.gdocs

+0

這是一個超級有用的工具。謝謝你指點我這個方向。 – geraldo

0

選項2的上述問題的實際工作,如果您將回調定義爲「?」。因此,使用jQuery getJSON方法和回調的一種方式是這樣的:

$.getJSON("https://spreadsheets.google.com/feeds/list/KEY/od6/public/basic?alt=json-in-script&callback=?", 
function(json) { 
    console.log(json); 
});