Google maps api 3 V3.34 Fitbund在地图重新定位时显示其他群集

Google maps api 3 V3.34 Fitbund在地图重新定位时显示其他群集,google-maps-api-3,Google Maps Api 3,我们遇到了类似的问题,如下面小提琴手所描述的 var映射; var标记; var-markerCluster; var-markersAmount; var网格大小; var最小聚类大小; var-t0,t1; 函数初始化(){ var center=newgoogle.maps.LatLng(0,0); map=new google.maps.map(document.getElementById('map-canvas'){ 缩放:4, 中心:中心,, mapTypeId:google.m

我们遇到了类似的问题,如下面小提琴手所描述的

var映射;
var标记;
var-markerCluster;
var-markersAmount;
var网格大小;
var最小聚类大小;
var-t0,t1;
函数初始化(){
var center=newgoogle.maps.LatLng(0,0);
map=new google.maps.map(document.getElementById('map-canvas'){
缩放:4,
中心:中心,,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
createMarkers();
}
函数createMarkers(){
//定义要创建的随机标记数
markersAmount=isNaN(document.getElementById('markersAmount').value)?5000:document.getElementById('markersAmount').value;
//定义标记簇栅格大小
gridSize=isNaN(document.getElementById('gridSize').value)?100:document.getElementById('gridSize').value;
//定义标记簇的最小簇大小
minimumClusterSize=isNaN(document.getElementById('minimumClusterSize').value)?10:document.getElementById('minimumClusterSize').value;
//空标记数组
标记=[];
//聚集所有标记
//定义墨卡托投影上的最大纬度
var maxLat=Math.atan(Math.sinh(Math.PI))*180/Math.PI;
//循环并创建标记
对于(变量i=0;ibounds.extend(m.getPosition());
映射边界(bounds);
}
google.maps.event.addDomListener(document.getElementById('fitBounds'),'click',fitBounds);
google.maps.event.addDomListener(窗口“加载”,初始化);
这在v3.31中运行良好,没有任何问题,但该版本现在已不推荐使用

我们还看到fitbounds也用于markercluster。我们是否也需要对此进行更改


解决这个问题的另一种方法是什么?

自从v3.32以来,我就一直在使用v3实用程序库中的集群来处理google maps的问题。我很确定需要对它进行一些代码更改,但不确定它是否被积极维护

var map;
var markers;
var markerCluster;
var markersAmount;
var gridSize;
var minimumClusterSize;
var t0, t1;

function initialize() {

    var center = new google.maps.LatLng(0, 0);

    map = new google.maps.Map(document.getElementById('map-canvas'), {
        zoom: 4,
        center: center,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    
    createMarkers();
}

function createMarkers() {

    // Define the number of random markers to create
    markersAmount = isNaN(document.getElementById('markersAmount').value) ? 5000 : document.getElementById('markersAmount').value;

    // Define the marker cluster grid size
    gridSize = isNaN(document.getElementById('gridSize').value) ? 100 : document.getElementById('gridSize').value;

    // Define the marker cluster minimum cluser size
    minimumClusterSize = isNaN(document.getElementById('minimumClusterSize').value) ? 10 : document.getElementById('minimumClusterSize').value;

    // Empty markers array
    markers = [];
    // Cluster all the markers

    // Define the max latitude on a mercator projection
    var maxLat = Math.atan(Math.sinh(Math.PI)) * 180 / Math.PI;

    // Loop and create the markers
    for (var i = 0; i < markersAmount; i++) {

        // Calculate a random lat and lng
        var lat = Math.floor(Math.random() * (maxLat * 2)) - maxLat;
        var lng = Math.floor(Math.random() * 360) - 180;

        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(lat, lng)
        });

        markers.push(marker);
    }
    markerCluster = new MarkerClusterer(map, markers, {
      imagePath: 'https://googlemaps.github.io/js-marker-clusterer/images/m',
      gridSize: parseInt(gridSize),
      minimumClusterSize: parseInt(minimumClusterSize)
    });
    
}

function fitBounds() {

    var bounds = new google.maps.LatLngBounds();
        markers.forEach(m => bounds.extend(m.getPosition()));
    map.fitBounds(bounds);
}

google.maps.event.addDomListener(document.getElementById('fitBounds'), 'click', fitBounds);
google.maps.event.addDomListener(window, 'load', initialize);