少しジレンマに。テーブルSchools、Projects、Sponsorsがあります。
Schools and Projectsには結合/連想テーブルがあります ( Schools have done some Projects )。スポンサーとプロジェクトも(スポンサーは、特定の学校によって行われた特定のプロジェクトを後援しました)。したがって、それらはすべて関連/接続されています。後で、この相互接続性を使用して、一連のフォーム コントロールをフィルタリングしたいと考えています。
3 つのすべてのテーブル ( Schools、Projects、Sponsors ) には、緯度と経度の列があります。
JSON を使用して、3 つすべてをマップ (Google Maps API v3) にマーカーとしてプロットし、それらがどのように接続されているかを何らかの方法で示したいと考えています。現在、jQuery 用のこのGoogle マップ v3 プラグインを使用しています。
そのため、初期化時にマップ上に 3 種類のマーカーが表示されます -学校(名前、住所、電話番号、学校の専門分野の種類、完了したプロジェクトなど)、プロジェクト(名前、説明、専門分野)、スポンサー(名前、住所、電話番号、スポンサー プロジェクトなど)。
フィルタリングは、「専門の種類」(選択した専門の種類を持つすべての学校、それらが行ったすべてのプロジェクト、および各プロジェクトのすべてのスポンサーを表示します) および「専門分野」(選択したすべてのプロジェクトを表示します) に基づいています。専門分野、これらのプロジェクトを行ったすべての学校、および各プロジェクトに関連するすべてのスポンサー)。
問題は、JSON ファイル (またはファイル?) とその構造の生成方法がわからないことです。
テーブルごとに 3 つの異なる JSON ファイル ( Schools、Projects、Sponsors ) を生成する必要があります。これらのファイルには、マーカーとしてプロットする場所 (緯度、経度) と共にデータが含まれます。
また
スポンサーの子ノードを含むプロジェクトの子ノードを含む学校に基づいて、1 つの巨大な JSON ファイルを生成する必要がありますか?
また
この問題にどのように取り組みますか?
これまでのところ、すべての学校を地図上のマーカーとしてプロットすることができました。
$(function(){
$('#map_canvas').gmap(mapOptions).bind('init', function() {
$.getJSON( 'results.json', function(data) {
$.each(data.schools, function(i, s) {
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(s.Lat, s.Lng),
'bounds':true
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', {
'content': '<h1>'+s.SchoolName+'</h1>'+
'<p style="color: green">'+s.SchoolAddress+'</p>'
}, this);
});
});
});
});
});