commit 4805091a235e234ec80ee5dcefa373f51735fb51
parent 41d1bf98362b693bf79f891520b2313a5694ee28
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Mon, 9 Dec 2019 22:28:23 +0100
canvasMarker: adapt to changes in new RBush
* invoke as class, not as a function
* define accessor methods in RBush subclass
Diffstat:
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/src/lib/leaflet.layer.canvasMarkers/index.js b/src/lib/leaflet.layer.canvasMarkers/index.js
@@ -1,6 +1,6 @@
import L from 'leaflet';
import './canvasMarkers.css';
-import rbush from 'rbush';
+import RBush from 'rbush';
import loadImage from 'image-promise';
import {wrapLatLngToTarget} from '~/lib/leaflet.fixes/fixWorldCopyJump';
@@ -31,6 +31,26 @@ function calcIntersectionSum(rect, rects) {
return sum;
}
+class MarkerRBush extends RBush {
+ toBBox(marker) {
+ const x = marker.latlng.lng;
+ const y = marker.latlng.lat;
+ return {
+ minX: x,
+ minY: y,
+ maxX: x,
+ maxY: y};
+ }
+
+ compareMinX(a, b) {
+ return a.latlng.lng - b.latlng.lng;
+ }
+
+ compareMinY(a, b) {
+ return a.latlng.lat - b.latlng.lat;
+ }
+}
+
L.Layer.CanvasMarkers = L.GridLayer.extend({
options: {
async: true,
@@ -44,8 +64,8 @@ L.Layer.CanvasMarkers = L.GridLayer.extend({
initialize: function(markers, options) {
L.GridLayer.prototype.initialize.call(this, options);
- this.rtree = rbush(9, ['.latlng.lng', '.latlng.lat', '.latlng.lng', '.latlng.lat']);
- this._regions = rbush();
+ this.rtree = new MarkerRBush(9);
+ this._regions = new RBush();
this._iconPositions = {};
this._labelPositions = {};
this._labelPositionsZoom = null;