リモート アクションを呼び出して、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;
}