我无法调用远程操作并将JSON数据转换为Timemap所需的数据格式。
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;
}
答案 0 :(得分:0)
老问题,但是:
您可能需要加载程序type: "jsonp"
或type: "json"
。 "remote"
是所有异步加载器的抽象基础。如果您只是加载本地JSON,而不是从启用JSONP的服务器加载,请使用"json"
。
远程URL中的回调是JSONP工作方式的一部分。有关详细信息,请参阅jQuery.ajax
的dataType
参数。回调名称将由Timemap.js自动生成(使用jQuery) - 您不需要担心回调函数,但是如果你需要在URL 中包含参数使用JSONP。
将地址字符串转换为lat / lon称为地理编码,而不是内置于Timemap.js中的内容。通常,在将数据加载到时间映射之前,您需要将数据预处理到地理编码地址 - 有各种在线工具和API可以为您执行此操作。 See related questions on SO.