2

少しジレンマに。テーブルSchoolsProjectsSponsorsがあります。

Schools and Projectsには結合/連想テーブルがあります ( Schools have done some Projects )。スポンサープロジェクトも(スポンサーは、特定の学校によって行われた特定のプロジェクトを後援しました)。したがって、それらはすべて関連/接続されています。後で、この相互接続性を使用して、一連のフォーム コントロールをフィルタリングしたいと考えています。

3 つのすべてのテーブル ( SchoolsProjectsSponsors ) には、緯度と経度の列があります。

JSON を使用して、3 つすべてをマップ (Google Maps API v3) にマーカーとしてプロットし、それらがどのように接続されているかを何らかの方法で示したいと考えています。現在、jQuery 用のこのGoogle マップ v3 プラグインを使用しています。

そのため、初期化時にマップ上に 3 種類のマーカーが表示されます -学校(名前、住所、電話番号、学校の専門分野の種類、完了したプロジェクトなど)、プロジェクト(名前、説明、専門分野)、スポンサー(名前、住所、電話番号、スポンサー プロジェクトなど)。

フィルタリングは、「専門の種類」(選択した専門の種類を持つすべての学校、それらが行ったすべてのプロジェクト、および各プロジェクトのすべてのスポンサーを表示します) および「専門分野」(選択したすべてのプロジェクトを表示します) に基づいています。専門分野、これらのプロジェクトを行ったすべての学校、および各プロジェクトに関連するすべてのスポンサー)。

問題は、JSON ファイル (またはファイル?) とその構造の生成方法がわからないことです。

テーブルごとに 3 つの異なる JSON ファイル ( SchoolsProjectsSponsors ) を生成する必要があります。これらのファイルには、マーカーとしてプロットする場所 (緯度、経度) と共にデータが含まれます。

また

スポンサーの子ノードを含むプロジェクトの子ノードを含む学校に基づいて、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);                           
                });                     
            });                 
        });             
    });         
});
4

2 に答える 2

2

私がこれにアプローチした(そしてそれが機能した)方法次のとおりです。

3 つのテーブルすべてのデータを含む1 つ (または 3 つの別個) のファイルを生成する代わりにJSON、ユーザーがマップ上で見たいものに応じて構築される SQL クエリを生成するだけです。

したがって、ユーザーが学校のみを表示したい場合は、データベースから学校のみを取得し、データ (名前、住所、電話番号、学校の専門分野の種類、完了したプロジェクトなど) をJSONフォーマットする SQL クエリを作成します。 -飛ぶ。

ユーザーがマップ上に複数のタイプのマーカーを表示したい場合 (例: Schools and their Projects ) - SchoolsProjects、およびそれらの関係データに関するJOINデータを取得するために使用する SQL クエリを構築するだけで、すべての学校を適切なプロジェクトにリンクし(学校には [学校情報]と[完了したプロジェクト]の 2 つのタブがあります)、その逆も同様です。 infobox

于 2012-05-19T01:27:51.450 に答える