【发布时间】: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