标记聚类在缩小时不聚类

时间:2018-06-20 12:07:22

标签: cluster-computing markerclusterer

我有一个100000的数据集,我在发送10000的同时发送数据,同时我添加了标记并重绘了群集,因此最终我得到了一个100000的群集。但是一旦我放大并尝试再次缩小它们,它们以10000个补丁重叠,而不是重新形成100000个单个簇。

           var mapDiv = document.getElementById('newmap');
           map = new google.maps.Map(mapDiv, {
 center: new google.maps.LatLng(latitude, longitude),
 zoom: 3,
 panControl: true,
 mapTypeControl: true,
 mapTypeControlOptions: {
         style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
 },
 zoomControl: true,
 zoomControlOptions: {
         position: google.maps.ControlPosition.LEFT_TOP,

 },
 streetViewControl: true,
 mapTypeId: google.maps.MapTypeId.ROADMAP
         });
          function addMarker1(locations,outletname,outletData)
           {
            var infoWindow = new google.maps.InfoWindow();
            markers = locations.map(function(location, i)
            {
                 return new google.maps.Marker
                  ({
                    position: location,

                  });
            });
           markerCluster = new MarkerClusterer(map, markers,{imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});


           new_arr=new_arr.concat(markers);
           markerCluster.clearMarkers()
           markerCluster.addMarkers(new_arr);
           markerCluster.redraw();

    }
    // this is sending data 10000 each
 for (var i = 0; i < outletDataLen; i++) {
 outletArray.push(outletData[i]['Outletview']['name']);
 j.push({
         lat: parseFloat(outletData[i]['Outletview']['latitude']),
         lng: parseFloat(outletData[i]['Outletview']['longitude'])
 });
 outletname.push(outletData[i]['Outletview']['name']);
 }
 addMarker1(j, outletname, outletData);

1 个答案:

答案 0 :(得分:0)

解决方案是在遍历标记之前清除数据

if (markerCluster) 
            {
                  markerCluster.clearMarkers();
                  markerCluster.resetViewport();
                  markers = [];
                  markerCluster.removeMarker(new_arr);
            }