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

古い質問ですが:

  • おそらくローダーtype: "jsonp"またはが必要type: "json"です。"remote"すべての非同期ローダーの抽象ベースです。JSONP 対応サーバーからロードするのではなく、ローカル JSON をロードするだけの場合は、"json".

  • リモート URL のコールバックは、JSONP の動作の一部です。詳細については、dataTypeパラメーターを参照してjQuery.ajaxください。コールバック名は (jQuery を使用して) Timemap.js によって自動的に生成されます。コールバック関数について心配する必要はありませんが、JSONP を使用している場合は URL にパラメーターを含める必要があります。

  • 住所文字列を緯度/経度に変換することはジオコーディングと呼ばれ、Timemap.js に組み込まれているものではありません。通常、データを Timemap にロードする前に、住所をジオコーディングするためにデータを前処理する必要があります。これを実行できるさまざまなオンライン ツールと API があります。SO に関する関連する質問を参照してください。

于 2012-11-16T19:35:14.897 に答える