1

我基于mapbox.js的地图数据源托管在 Google Drive 上的电子表格中。实际上,我使用Geo for Google Docs将位置导出到 GeoJSON 和Leaflet.markercluster以在地图上可视化它们。

我需要直接从 Google Drive 加载寄存器,这样更改将立即反映而无需导出数据。mapbox.js API 有不同的方法来完成这一点,但它们都不适合我。所以我的问题是(A)其中哪一个是首选,以及(B)我如何才能使这个工作:

  1. markerLayer.loadURL()方法加载并显示 GeoJSON 数据,但我不知道如何直接访问 GeoJSON 格式的 Google Drive 文件而不先导出它。

  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,类似于将CSV 加载到标记示例中。使用以下代码,我在 mapbox.js 的第 5 行得到一个TypeError: t is undefined 错误

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

谢谢您的帮助。

4

2 回答 2

2

看看 recline.js,一个用于构建数据应用程序的库。它有一个 Google Docs 数据源,允许您使用 Google Docs 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

于 2013-10-07T03:34:49.410 回答
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);
});
于 2013-10-24T15:05:10.163 回答