首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在某种程度上相关的三个表需要作为标记在地图上绘制。生成JSON文件来绘制它们的最佳方法?

在某种程度上相关的三个表需要作为标记在地图上绘制。生成JSON文件来绘制它们的最佳方法?
EN

Stack Overflow用户
提问于 2012-05-15 15:08:40
回答 2查看 276关注 0票数 2

有点进退两难。我有桌子,Projects赞助商

项目有一个连接/关联表(School做了一些项目)。也赞助了项目(赞助商赞助了由某些学校E 223完成的特定项目)。因此,它们都是相关的/相互关联的。稍后,我想使用这种相互连接来过滤一堆表单控件。

所有三个表(School、Projects、Sponsors)都有纬度和经度列。

使用JSON,我想在我的地图(Google v3)上把这三个标记都画出来,并以某种方式展示它们是如何连接的。我现在正在使用这个谷歌地图v3 jQuery插件

因此,在地图上初始化时会出现三种类型的标记:(名称、地址、电话、学校的专业类型、已完成的项目等)、 projects (名称、描述、专业领域)、(名称、地址、电话、赞助项目等)。

过滤将基于“专业类型”(将显示所有具有选定专业类型的学校、它们所做的所有项目以及每个项目的所有发起人)和“专业领域”(将显示所有具有特定专业领域的项目、所有从事这些项目的学校以及与每个项目相关的所有赞助商)。

问题是,我不知道如何生成JSON文件(或文件?)以及它们的结构。

我是否应该为每个表生成三个不同的JSON文件(School、Projects、 files ),这些文件将包含数据以及位置(lat、液化天然气),将它们绘制为标记。

我是否应该生成一个巨大的JSON文件,比方说,基于,它将包含Projects子节点,而后者又将包含赞助商子节点?

你会如何处理这个问题?

到目前为止,我已经把所有的学校都画成了地图上的标记:

代码语言:javascript
代码运行次数:0
运行
复制
$(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);                           
                });                     
            });                 
        });             
    });         
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-19 01:27:51

我处理这一问题的方式(而且起了作用)如下:

与生成一个(或三个)包含所有三个表的数据的JSON文件不同,我只是生成一个SQL查询,这个查询是根据用户希望在地图上看到的内容构建的。

因此,如果用户只想看到-构建一个SQL查询,该查询只从数据库中获取 school 并格式化数据(姓名、地址、电话、学校的专业类型、已完成的项目等)。变成了JSON格式。

如果用户希望在地图上看到多个类型的标记(例如,及其 Projects ) --只需构建使用JOIN获取有关的数据的SQL查询,则Projects及其关系数据可用于将每个学校链接到适当的E 115项目E 216(E 117 school E 218/code>d19有两个选项卡--学校信息和项目),反之亦然。

票数 2
EN

Stack Overflow用户

发布于 2012-05-16 14:26:12

JSON一代非常简单。JSON只是以这样一种方式格式化的字符串,它们可以在不同的平台之间发送,并被解码成一些有用的东西,比如数组。

至于格式,也许您可以制作另一个纬度/经度表作为主键,以跟踪每个lat/lat位置与其关联的内容(即学校/项目/赞助商)。

所以你有:

代码语言:javascript
代码运行次数:0
运行
复制
Location | School     | Project     | Sponsor
---------|------------|-------------|----------
12/46    | Hoover Elem| Science Fair| NULL
37/87    | NULL       | Recycling   | GreenSponsor
45/32    | Lonely High| NULL        | NULL

通过这种方式,您可以查询这个表来映射相对于每个位置的关系。

如果每个元素(学校/项目/赞助商)都有该位置,您应该能够通过使用精心编制的SELECT语句自动生成该表。

编辑:即使不像“从这三个位置相同的表中选择所有名字”那样简单,你也应该能够选择一个位置(我假设是学校),然后根据学校与项目共享的“专门化”或“已完成项目”来填写任何关系,如果存在,请检查是否有与这些项目相关的赞助商。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10603673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档