HTMLへの埋め込み
以下のコードを basic_map.tql として保存してください。この文書では、この TQL の結果をWebページに埋め込む方法を説明します。
SCRIPT({
$.yield({
type:"polygon",
coordinates:[[37,-109.05],[41,-109.03],[41,-102.05],[37,-102.05]],
properties: {
fill: false
}
});
$.yield({
type: "marker",
coordinates:[38.9934,-105.5018],
properties: {
popup:{content: Date()}
}
});
$.yield({
type: "circleMarker",
coordinates:[38.935,-105.520],
properties:{ radius: 40, fillOpacity:0.4, stroke: false }
});
})
GEOMAP()IFRAME
| |
JSONレスポンスの利用
X-Tql-Output: json ヘッダーを付けて .tql スクリプトを呼び出すと、既定のHTMLの代わりにJSONを取得できます。
これにより、任意のDOM位置に地図を直接挿入できます。X-Tql-Output: json ヘッダーは、GEOMAP( geoMapJson(true) ) オプションと同じように動作します。
/db/tql/basic_map.tql が返すJSONには、次の情報が含まれます。
{
"geomapID":"MTcwMzE3NjYwMjA0Nzg1NjY0",
"style": {
"width": "600px",
"height": "600px",
"grayscale": 0
},
"jsAssets": ["/web/geomap/leaflet.js"],
"cssAssets": ["/web/geomap/leaflet.css"],
"jsCodeAssets": [
"/web/api/tql-assets/MTcwMzE3NjYwMjA0Nzg1NjY0_opt.js",
"/web/api/tql-assets/MTcwMzE3NjYwMjA0Nzg1NjY0.js"
]
}geomapID:地図に使用するランダムなID。必要に応じてgeomapID()オプションで指定できます。jsAssets:Leafletライブラリとプラグインのパス。cssAssets:Leafletに必要なCSSファイルのリスト。jsCodeAssets:結果データの描画に必要なJavaScript。
以下のHTMLは、上記のJSONを使って地図を描画する例です。
| |
- 3行目:レスポンスの
cssAssetsに含まれるLeafletスタイルシートを事前に読み込みます。 - 6行目:
jsAssetsのLeafletライブラリを事前に読み込みます。 - 17行目:
X-Tql-Output: jsonヘッダーでJSONメタ情報を要求します。 - 26行目:レスポンスの
jsCodeAssetsを順番にDOMに追加します。
TQLの動的な呼び出し
/db/tql エンドポイントは、POSTで渡されたTQLスクリプトを実行し、結果のJavaScriptを返します。
以下の例のように、クライアント側で動的に読み込めます。40行目で geomapID("map_is_here") によりIDを指定し、同じ id を持つ <div> を用意しています。
| |
読み込み順序の問題
jsAssets と jsCodeAssets を同時に読み込むと、次のコードのように順序の問題が発生することがあります。
| |
jsAssets に含まれるLeafletライブラリの読み込み完了前に jsCodeAssets を実行すると、エラーが発生する場合があります。
読み込み完了時のコールバックを使い、順番に読み込んでください。
| |
最後の jsAssets を読み込んでから jsCodeAssets を読み込むと、この問題を防げます。
| |
最終更新日