【问题标题】:Google maps markClusterer - syntax unclear [closed]谷歌地图markerClusterer - 语法不清楚[关闭]
【发布时间】:2021-11-02 11:49:59
【问题描述】:

在尝试了我找到的每个示例后,我无法让 Google 地图集群工作。所有标记都显示,没有控制台错误,但没有聚类。

首先,我在使用markerClusterer not defined 时遇到了一些问题,有时会发生,有时不会。这显然是因为我的https://maps.googleapis.com/maps/api/js 脚本设置为async(我的正常做法),这意味着当我为其指定的回调函数运行时,https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js 可能无法加载。很高兴知道是否有办法解决这个问题(markerClusterer 代码的回调?)但现在,为了弄清楚真正的问题,我已经删除了async

由于所有标记都工作正常,我将只提供与聚类相关的代码。在初始化地图的回调函数中,我尝试了这种方法(将标记添加到数组中,然后将整个数组提供给markerClusterer):

var marker;
var markers = [];

for ( var member_id in members_data ) {

    // Add marker
    marker = new google.maps.Marker({
        position: {
            lat: members_data[ member_id ].location_data.lat,
            lng: members_data[ member_id ].location_data.lng
        },
        map: my_map,
    });
    markers.push( marker );

}

const marker_clusterer = new markerClusterer.MarkerClusterer({ my_map, markers });

我还发现了这种语法,其中标记是单独添加的:

var marker;
var markers          = [];
var marker_clusterer = new markerClusterer.MarkerClusterer({ my_map });

for ( var member_id in members_data ) {

    // Add marker
    marker = new google.maps.Marker({
        position: {
            lat: members_data[ member_id ].location_data.lat,
            lng: members_data[ member_id ].location_data.lng
        },
        map: my_map,
    });
    markers.push( marker );
    marker_clusterer.addMarker( marker );

}

两者都不起作用 - 没有控制台错误,没有集群,正常标记都很好。关于如何开始调试的任何线索?

【问题讨论】:

  • 语法 new markerClusterer.MarkerClusterer 不正确(应该是 (new MarkerClusterer),你在哪里看到记录的?请提供一个 minimal reproducible example 来证明你的问题,或查看重复的问题之一. 在 StackOverflow 上的各种帖子中都有添加标记数组和将单个标记添加到现有 MarkerClusterer 的示例。
  • @geocodezip new markerClusterer.MarkerClusterer 可在 Google 官方文档页面上找到:developers.google.com/maps/documentation/javascript/…
  • @geocodezip 明确地说,正如我所说,我花了很长时间搜索 StackOverflow,尝试了所有示例,但都没有奏效。以上两个似乎是最常见的。如果有人知道其他方法,我将不胜感激。
  • 发布代码中的MarkerClusterer 构造函数显然是错误的。我知道这里有工作示例(使用 mcve)
  • @geocodezip 谢谢,有链接吗?

标签: google-maps markerclusterer


【解决方案1】:
var marker_clusterer = new markerClusterer.MarkerClusterer({ my_map });

应该是

var marker_clusterer = new markerClusterer.MarkerClusterer({ map: my_map });

【讨论】:

  • 正确,非常感谢。在我的辩护中,const markerCluster = new markerClusterer.MarkerClusterer({ map, markers }); 不是 100% 清楚的!但回想起来,答案是显而易见的,给定 JS 对象语法。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2012-09-19
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多