Commit 2bce12fa70f2eddaad3f1b253205ab59879da215

Authored by Igor Kulikov
Committed by GitHub
2 parents 389988fb cffe2135

Merge pull request #3268 from vvlladd28/improvement/map/bounds-marker-cluster

[3.0] Fix updated bounds for marker cluster mode
@@ -322,9 +322,13 @@ export default abstract class LeafletMap { @@ -322,9 +322,13 @@ export default abstract class LeafletMap {
322 bounds.extend(polygon.leafletPoly.getBounds()); 322 bounds.extend(polygon.leafletPoly.getBounds());
323 }); 323 });
324 } 324 }
325 - this.markers.forEach((marker) => {  
326 - bounds.extend(marker.leafletMarker.getLatLng());  
327 - }); 325 + if ((this.options as MarkerSettings).useClusterMarkers) {
  326 + bounds.extend(this.markersCluster.getBounds());
  327 + } else {
  328 + this.markers.forEach((marker) => {
  329 + bounds.extend(marker.leafletMarker.getLatLng());
  330 + });
  331 + }
328 332
329 const mapBounds = this.map.getBounds(); 333 const mapBounds = this.map.getBounds();
330 if (bounds.isValid() && (!this.bounds || !mapBounds.contains(bounds))) { 334 if (bounds.isValid() && (!this.bounds || !mapBounds.contains(bounds))) {
@@ -398,16 +402,20 @@ export default abstract class LeafletMap { @@ -398,16 +402,20 @@ export default abstract class LeafletMap {
398 402
399 private createMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings, 403 private createMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings,
400 updateBounds = true, callback?): Marker { 404 updateBounds = true, callback?): Marker {
401 - const newMarker = new Marker(this, this.convertPosition(data), settings, data, dataSources, this.dragMarker);  
402 - if (callback)  
403 - newMarker.leafletMarker.on('click', () => { callback(data, true) });  
404 - if (this.bounds && updateBounds)  
405 - this.fitBounds(this.bounds.extend(newMarker.leafletMarker.getLatLng()));  
406 - this.markers.set(key, newMarker);  
407 - if (!this.options.useClusterMarkers) {  
408 - this.map.addLayer(newMarker.leafletMarker);  
409 - }  
410 - return newMarker; 405 + const newMarker = new Marker(this, this.convertPosition(data), settings, data, dataSources, this.dragMarker);
  406 + if (callback) {
  407 + newMarker.leafletMarker.on('click', () => {
  408 + callback(data, true)
  409 + });
  410 + }
  411 + if (this.bounds && updateBounds && !(this.options as MarkerSettings).useClusterMarkers) {
  412 + this.fitBounds(this.bounds.extend(newMarker.leafletMarker.getLatLng()));
  413 + }
  414 + this.markers.set(key, newMarker);
  415 + if (!this.options.useClusterMarkers) {
  416 + this.map.addLayer(newMarker.leafletMarker);
  417 + }
  418 + return newMarker;
411 } 419 }
412 420
413 private updateMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings): Marker { 421 private updateMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings): Marker {