V3.34 fitbound показывает дополнительные кластеры при изменении положения карты - PullRequest
0 голосов
/ 06 сентября 2018

Мы столкнулись с подобной проблемой, описанной ниже.

http://jsfiddle.net/Lmm5hrp9/2/

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);

Это нормально работало в v3.31 без каких-либо проблем, однако эта версия устарела.

мы также видим, что fitbounds используется и в markercluster. Нужно ли вносить изменения и в это?

Пожалуйста, предоставьте альтернативу, которая может быть использована для решения этой проблемы. Спасибо заранее.

1 Ответ

0 голосов
/ 11 сентября 2018

У меня были проблемы с картами Google, использующими кластеризацию из служебной библиотеки v3, начиная с v3.32. Я уверен, что в него нужно внести некоторые изменения в код, но не уверен, что он активно поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...