diff --git a/src/view.map.js b/src/view.map.js index 9f3e90d3..7b554163 100644 --- a/src/view.map.js +++ b/src/view.map.js @@ -92,6 +92,9 @@ my.Map = Backbone.View.extend({ self.state.set(self.menu.state.toJSON()); self.redraw(); }); + this.state.bind('change', function() { + self.redraw(); + }); this.elSidebar = this.menu.el; }, @@ -179,7 +182,7 @@ my.Map = Backbone.View.extend({ var countAfter = 0; this.features.eachLayer(function(){countAfter++;}); var sizeIncreased = countAfter - countBefore > 0; - if (!this.state.get('cluster') && countAfter > 100 && sizeIncreased) { + if (!this.state.get('cluster') && countAfter > 99 && sizeIncreased) { this.state.set({cluster: true}); return; } diff --git a/test/view.map.test.js b/test/view.map.test.js index f1865a56..f8d9c7a8 100644 --- a/test/view.map.test.js +++ b/test/view.map.test.js @@ -130,13 +130,34 @@ test('_getGeometryFromRecord non-GeoJSON', function () { }); }); +test('many markers', function () { + var data = []; + for (var i = 0; i<1000; i++) { + data.push({ id: i, lon: 13+3*i, lat: 52+i/10}); + } + var fields = [ + {id: 'id'}, + {id: 'lat'}, + {id: 'lon'} + ]; + + var dataset = new recline.Model.Dataset({records: data, fields: fields}); + var view = new recline.View.Map({ + model: dataset + }); + $('.fixtures').append(view.el); + view.render(); + + dataset.query(); + + equal(view.state.get('cluster'), true); + view.remove(); +}); + test('Popup', function () { var dataset = GeoJSONFixture.getDataset(); var view = new recline.View.Map({ - model: dataset, - state: { - cluster: false - } + model: dataset }); $('.fixtures').append(view.el); view.render();