0

我无法调用远程操作并将 JSON 数据转换为 Timemap 所需的数据格式。

  • 数据集的类型值应该是什么:“remote”或“jsonp”?
  • 远程 URL 中的回调是什么?是必需的吗?
  • 在转换方法中,我拥有的数据只有地址(没有纬度值),我如何将此地址转换为纬度值?有地图绘制的例子吗?我不想用 mapstraction 或 google v3 地图创建另一个地图?

代码片段:

tm = TimeMap.init({
        mapId: "map",               // Id of map div element (required)
        timelineId: "timeline",     // Id of timeline div element (required) 
        datasets: [
            {
                id: "fdmdata",
                title: "FDM Data",
                theme: "green",
                type: "remote", // or is it type: "jsonp"
                options: {    
                    //query: fdmMapQuery,
                    url: "loadFdmMapData.ge?" +
                    "orderby=starttime&sortorder=ascending&callback=?",
                    preloadFunction: preloadData,                        
                    transformFunction: transformData,
                }
            },
        ],
        bandInfo: [    
            {
                     width:          "85%", 
                     intervalUnit:   Timeline.DateTime.MONTH, 
                     intervalPixels: 200,
                     theme:          theme
            },
            {
                     width:          "15%", 
                     intervalUnit:   Timeline.DateTime.DAY, 
                     intervalPixels: 300,
                     overview:       true
            }
        ]
    });
});


function transformData(data) {      
    var title, description, start, end, lat, lon, infoHtml;
    var newData = {
        "title" : title,
        "start" : start,
        "end" : end,
        "options" : {
            "description" : description
        }
    };
    newData["point"] = {
       "lat" : lat,
        "lon" : lon
    };            
    newData["options"]["infoHtml"] = infoHtml;
    return newData;
}

function preloadData(result) {
    var entries = (result.feed.entry);
    var events = [];
    // delete events without geotags
    for (var x=0; x<entries.length; x++) {
        entry = entries[x];
        var location = entry['gd$where'][0].valueString;
        var pattern = new RegExp(/@\s*([\-0-9.]+)\s*,\s*([\-0-9.]+)\s*/);
        var matches = pattern.exec(location);
        if (matches != null) events.push(entry);
    }
    return events;
}    
4

1 回答 1

0

老问题,但是:

  • 您可能需要 loadertype: "jsonp"type: "json". "remote"是所有异步加载器的抽象基础。如果您只是加载本地 JSON,而不是从启用 JSONP 的服务器加载,请使用"json".

  • 远程 URL 中的回调是 JSONP 工作方式的一部分。有关详细信息,请参阅dataType参数jQuery.ajax。回调名称将由 Timemap.js(使用 jQuery)自动生成 - 您无需担心回调函数,但如果您使用 JSONP,则需要在 URL 中包含参数。

  • 将地址字符串转换为纬度/经度称为地理编码,而不是 Timemap.js 中内置的内容。通常,在将数据加载到 Timemap 之前,您需要对数据进行预处理以对地址进行地理编码 - 有各种在线工具和 API 可以为您执行此操作。请参阅有关 SO 的相关问题。

于 2012-11-16T19:35:14.897 回答