【问题标题】:Gmaps4rails: What's the proper way to enable clustering after adding markers via AJAX?Gmaps4rails:通过 AJAX 添加标记后启用集群的正确方法是什么?
【发布时间】:2012-08-21 12:39:43
【问题描述】:

我试图从文档中搜索答案,但找不到..

当我通过 AJAX 在地图上添加标记时,如何在 Gmaps4rails 中启用集群。我的观点是这样的:

<%= gmaps( map_options: { zoom: 15, auto_adjust: false } ) %>

并在我的 javascript 中添加如下标记:

     $.getJSON(path, { lat: lat, lng: lng, user_lat: user_lat, user_lng: user_lng }, function(markers_json) {
        Gmaps.map.replaceMarkers(markers_json); 
     });

我只想将 do_clustering 选项设置为 true,但是因为我在 map gmaps() 调用中没有标记 json,所以我也无法添加标记选项。

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 gmaps4rails


    【解决方案1】:

    直接告诉gmaps4rails

    Gmaps.map.markers_conf.do_clustering = true;
    

    并包含此脚本:

    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.9/src/markerclusterer_packed.js"></script>
    

    【讨论】:

    • 它说:Uncaught ReferenceError: MarkerClusterer is not defined。我把你的代码放在我的 replaceMarkers 之后。
    • 我的代码应该在你之前添加。我已经更新了我的答案
    • 错误消息消失了,但我仍然看不到任何集群发生。我会尝试在晚上进行更多的调试。也许更大的标记集可以帮助我测试这个东西。顺便提一句。那个必要的 js 包含在 wiki 文档某处提到的标签吗?
    • 替换后添加:Gmaps.map.adjustMapToBounds();。所有这些现在在 github 上的 objectify_js 分支中都是自动的
    • 我没有收到您的最后评论。无论如何,集群现在正在工作。只是为了确保,我在哪里包含该 clusterer js 标记是否重要?再次感谢 - 真的很感激。