时间映射和mapstraction地理编码

时间:2012-07-12 15:33:58

标签: google-maps-api-3

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

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

CODE SNIPPET:

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;
}    

1 个答案:

答案 0 :(得分:0)

老问题,但是:

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

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

  • 将地址字符串转换为lat / lon称为地理编码,而不是内置于Timemap.js中的内容。通常,在将数据加载到时间映射之前,您需要将数据预处理到地理编码地址 - 有各种在线工具和API可以为您执行此操作。 See related questions on SO.