gpt4 book ai didi

javascript - API V3 上的 Google map ClusterManager 无法重新加载/初始加载

转载 作者:行者123 更新时间:2023-11-28 09:55:39 25 4
gpt4 key购买 nike

我正在尝试使用 http://cm.qfox.nl/ 中的 Google Maps V3 API ClusterManager将 map 上的标记聚集在一起,但我在代码中遇到了与原始网站相同的错误 - 第一次加载或重新加载页面时出现错误:


Uncaught TypeError: Cannot call method 'fromLatLngToPoint' of undefined ClusterManager_v3.js:586<br/>
ClusterManager.latlngToPoint ClusterManager_v3.js:586<br/>
ClusterManager._getMarkerBounds ClusterManager_v3.js:645<br/>
ClusterManager._cacheMarkerIcon ClusterManager_v3.js:580<br/>
ClusterManager.update ClusterManager_v3.js:345<br/>
(anonymous function) ClusterManager_v3.js:91<br/>

它在初始加载后工作正常,所以我相当确定这是由于计时问题 - 例如, map 或标记在使用之前未初始化。不幸的是,我无法找到等待一切初始化的方法,因为 Javascript 不是我的母语。任何帮助或指示将非常受欢迎。该网站的源代码是我正在使用的几乎完全相同的代码。

更新:

如果发现改行:

cm._requestUpdate(50);

cm._requestUpdate(250);

防止了错误。将其更改为 150 会导致错误发生 3/10 次。我不完全确定这是一个解决方案,但也许是这样,所以我将发布此帖子,以防其他人有更好的解决方案或想了解我的解决方案。

最佳答案

使用Projection方法,它必须被初始化。 MapProjection被创建时,将会触发"projection_changed"事件。只有在创建之后才可以使用map.getProjection()。所以我的建议是,添加 "projection_changed" 事件的监听器,并在调用时初始化 ClusterManager:

google.maps.event.addListenerOnce(map, 'projection_changed', function(){
var cm = window.cm = new ClusterManager(
map,
{
objClusterIcon: new google.maps.MarkerImage('markers/cluster.png', false, false, false, new google.maps.Size(20,20)),
objClusterImageSize: new google.maps.Size(20,20)
}
);

// now json contains a list of marker positions. lets add them.
for (var i = 0; i < json.length; ++i) {

.....
}
cm._requestUpdate(50);
});

关于javascript - API V3 上的 Google map ClusterManager 无法重新加载/初始加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com