【发布时间】:2012-05-23 03:19:00
【问题描述】:
有点进退两难。我有表格Schools、Projects、Sponsors。
Schools 和 Projects 有一个连接/关联表(Schools 已经完成了一些Projects)。 赞助商和项目(赞助商赞助了由某些学校完成的某些项目 )。因此,它们都是相关/连接的。稍后,我想使用这种互连来过滤一堆表单控件。
所有三个表(Schools、Projects、Sponsors)都有纬度和经度列。
使用 JSON,我想在我的地图(Google Maps API v3)上绘制所有三个标记,并以某种方式显示它们是如何连接的。我现在正在使用这个Google Maps v3 plugin for jQuery。
所以,地图初始化时会出现三种类型的标记 - 学校(名称、地址、电话、学校的专业类型、已完成的项目等),项目(名称、描述、专业领域)、赞助商(名称、地址、电话、赞助项目等)。
过滤将基于“专业类型”(将显示具有选定专业类型的所有学校、他们完成的所有项目以及每个项目的所有赞助商)和“专业领域”(将显示所有具有选定专业领域的项目、完成这些项目的所有学校以及与每个项目相关的所有赞助商)。
问题是我不确定如何生成 JSON 文件(或文件?)及其结构。
我是否应该为每个表(Schools、Projects、Sponsors)生成三个不同的 JSON 文件,其中将包含数据以及位置( lat, lng) 将它们绘制为标记。
或
我是否应该生成一个基于 Schools 的巨大 JSON 文件,其中包含 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);
});
});
});
});
});
【问题讨论】:
-
假设您不是在寻找代码来查询数据库并实际创建 JSON 是否安全?您想关注 JSON 的实际结构以及如何在客户端使用 JavaScript 处理它?
标签: jquery json google-maps google-maps-api-3 google-maps-markers