前項に引き続いて、ロケタッチのスポット検索の結果を表示する。
実行例:xlocclip02.html?start_tab=1
// JavaScript
$.getJSON(uri,function(data){
if (data.code == 200){ // 処理成功
//console.log(data);
showGridLoctSpotList(data.spots); // グリッドにスポット一覧を表示
displayLoctSpots(data.spots); // 地図にスポットを表示
} else { // 処理失敗
$.messager.alert('Error','Search failed.');
}
});
結果は以下のようなJSON形式で得られる。
// JSON
{
"spots": [
{
"icon": {
"large": "http://tou.ch/images/category/086_l.png",
"small": "http://tou.ch/images/category/086_s.png",
"medium": "http://tou.ch/images/category/086_m.png"
},
"closed": false,
"link": "http://tou.ch/spot/207758/",
"distance": "7",
"lat": "35.710042298369",
"name": "東京スカイツリー TOKYO SKYTREE",
"parent_category": "建物・ランドマーク",
"external_link": "",
"category_id": "86",
"category": "タワー",
"id": "207758",
"address": "東京都墨田区押上1-1-13",
"lng": "139.81073830423"
},
検索結果の一覧を左グリッドに表示する。グリッドはjQuery EasyUIのDataGridで、
・表示する列名を指定
・表示するデータをセット
する。データはオブジェクトの配列で、指定した列だけを表示してくれる。
// JavaScript
function showGridLoctSpotList(spots){
var colData = [[ // 表示する列を指定する(データのフィールド名と表示名)
{ field: 'name', title: 'Spot Name', width: 220 },
{ field: 'category', title: 'Category', width: 45 }
]];
$('#dgSearchResult').datagrid({
columns : colData,
data : spots,
});
}
dataには経緯度などの情報も含まれているが、columnsで指定した項目だけが表示される。’name’はロケタッチが決めた属性名で、グリッドに表示するする際の列名は、’Spot Name’となる。

検索結果の一覧をGoogle Mapsに表示する。ロケタッチのアイコンをマーカーとして使用する。

「左グリッドで1つのスポットを選択したとき」と「マップで1つのスポットをクリックしたとき」のイベントハンドラを定義し、選ばれたスポットの詳細データを右グリッドに表示する。
DataGridの選択イベントはonSelectなので、以下のようにイベントハンドラを追加する。
// JavaScript
$('#dgSearchResult').datagrid({
columns : colData,
data : spots,
onSelect: function(index, row){ // rowは元データの属性を全て保持するオブジェクト
showGridLoctSpotItem(row);//スポットの詳細を表示する
console.log(row.id + ' - ' + row.name);
}
});
地図マーカーをクリックしたときも同じshowGridLoctSpotItem()を呼び出す。

