【问题标题】:Google Maps - Saving a dynamic map谷歌地图 - 保存动态地图
【发布时间】:2012-08-05 23:38:43
【问题描述】:

我正在尝试使用最新的 Google Map API 创建动态地图。到目前为止一切都很顺利。我当然有一个问题:

我/你将如何保存我当前的地图? 假设您使用动态标记构建地图:由于一切都是通过 JavaScript 完成的,因此我需要从文件/数据库中获取/设置这些值。

我正在考虑将整个 google.map.Markers 输出为 JSON 并将其作为字符串发送到数据库,但是如果我有大约 100 个位置,我不确定它会有多好,我我担心效率。

这是唯一的方法吗?我的想法是否正确?基本上,您的网站用户可以在地图上放置一个标记,然后当然需要确认。确认后,该标记必须位于地图的最新“版本”中,因此我必须从/到数据库/文件中获取该信息。

提前致谢!

【问题讨论】:

    标签: javascript google-maps-api-3 google-maps-markers


    【解决方案1】:

    我正在创建类似的应用程序并以这种方式实现它:

    我有一个Marker 表,其中包含我在标记中使用的每个属性的列(例如纬度、经度、名称、描述、类型等)当有人添加标记时,我只是保存属性标记到数据库。下次我想显示标记时,我只是从数据库中获取属性,将它们编码为 JSON 并附加到页面。内页我有 JS 抓取这些属性并在地图内创建标记。伪代码:

    //this is generated dynamically from DB.
    var markers = [
                    {lat:115416,lng:26411},
                    {lat:115416,lng:26411}
                  ];
    
    //this is static, just grabs the dynamic bit and puts it on the map:
    for (var i = 0; i < markers.length; i++){
       //creates a marker object
       var marker = new Marker({lat:markers[i].lat, lng:markers[i].lng })
       //displays it on the map
       map.addMarker(marker);
    }
    

    这样做的好处是您在数据库中的数据独立于地图实现,例如如果将来您决定迁移到苹果地图并且它具有不同的实现,您可以编写不同的 JS 来处理数据。您也可以查询它,例如您可以通过查看 lat 和 lang 等来查询靠近的地方。

    【讨论】:

    • 感谢瓦伦蒂娜的回复。我的发展远远落后,但你的洞察力符合我的预期。尽管将标记选项保留为数据库中的列是一个好主意,而不是直接转储 JSON 对象。谢谢你的提示。只有一件事,你如何创建标记对象?您是否使用动态 javascript 文件,例如
    • @Tobias 我只是将 JSON 直接附加到页面,如下所示:gist.github.com/3278607(伪代码)。我的应用程序是页面应用程序,因此在每次页面加载时,我还会在 JS 变量中发回标记数据。在您的情况下,它可能会有所不同,但实际上没有区别。如果您有很多标记,您可能希望使用 AJAX 批量加载它们,如果它们很少,您可以直接将它们附加到页面或通过
    • 感谢您对要点的打扰。我想我会采用从数据库中获取所有标记并转储到标记对象的标准实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多