有点进退两难。我有表学校、项目、赞助商。
学校和项目有一个连接/关联表(学校已经完成了一些项目)。赞助商和项目(赞助商赞助了某些学校完成的某些项目)。因此,它们都是相关/连接的。稍后,我想使用这种互连来过滤一堆表单控件。
所有三个表(Schools、Projects、Sponsors)都有纬度和经度列。
使用 JSON,我想在我的地图(Google Maps API v3)上绘制所有三个标记,并以某种方式显示它们是如何连接的。我目前正在为 jQuery 使用这个 Google Maps v3 插件。
因此,地图初始化时将有三种类型的标记 -学校(名称、地址、电话、学校的专业类型、已完成的项目等)、项目(名称、描述、专业领域)、赞助商(姓名、地址、电话、赞助项目等)。
过滤将基于“专业类型”(将显示所有具有选定专业类型的学校、他们所做的所有项目以及每个项目的所有赞助商)和“专业领域”(将显示所有选定的项目专业领域,所有完成这些项目的学校以及与每个项目相关的所有赞助商)。
问题是我不确定如何生成 JSON 文件(或文件?)及其结构。
我是否应该为每个表(Schools、Projects、Sponsors)生成三个不同的 JSON 文件,其中将包含数据以及位置(lat、lng)以将它们绘制为标记。
或者
我是否应该生成一个巨大的 JSON 文件,比方说,基于Schools将包含Projects子节点,而 Projects 子节点又将包含Sponsors子节点?
或者
你会如何处理这个问题?
到目前为止,我已经设法在我的地图上绘制了所有学校作为标记:
$(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);
});
});
});
});
});