@mapgis/supercluster 17.0.0 → 17.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/supercluster.js +3 -3
- package/dist/supercluster.min.js +1 -1
- package/package.json +1 -1
package/dist/supercluster.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
4
|
-
(global = global || self, global.Supercluster = factory());
|
|
5
|
-
}(this, (function () { 'use strict';
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Supercluster = factory());
|
|
5
|
+
})(this, (function () { 'use strict';
|
|
6
6
|
|
|
7
7
|
function sortKD(ids, coords, nodeSize, left, right, depth) {
|
|
8
8
|
if (right - left <= nodeSize) { return; }
|
|
@@ -658,4 +658,4 @@ function getY(p) {
|
|
|
658
658
|
|
|
659
659
|
return Supercluster;
|
|
660
660
|
|
|
661
|
-
}))
|
|
661
|
+
}));
|
package/dist/supercluster.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t=t||self).Supercluster=o()}(this,(function(){"use strict";function t(e,n,r,i,s,a){if(!(s-i<=r)){var p=i+s>>1;!function t(e,n,r,i,s,a){for(;s>i;){if(s-i>600){var p=s-i+1,h=r-i+1,u=Math.log(p),f=.5*Math.exp(2*u/3),d=.5*Math.sqrt(u*f*(p-f)/p)*(h-p/2<0?-1:1),l=Math.max(i,Math.floor(r-h*f/p+d)),c=Math.min(s,Math.floor(r+(p-h)*f/p+d));t(e,n,r,l,c,a)}var m=n[2*r+a],v=i,g=s;for(o(e,n,i,r),n[2*s+a]>m&&o(e,n,i,s);v<g;){for(o(e,n,v,g),v++,g--;n[2*v+a]<m;)v++;for(;n[2*g+a]>m;)g--}n[2*i+a]===m?o(e,n,i,g):(g++,o(e,n,g,s)),g<=r&&(i=g+1),r<=g&&(s=g-1)}}(e,n,p,i,s,a%2),t(e,n,r,i,p-1,a+1),t(e,n,r,p+1,s,a+1)}}function o(t,o,n,r){e(t,n,r),e(o,2*n,2*r),e(o,2*n+1,2*r+1)}function e(t,o,e){var n=t[o];t[o]=t[e],t[e]=n}function n(t,o,e,n){var r=t-e,i=o-n;return r*r+i*i}var r=function(t){return t[0]},i=function(t){return t[1]},s=function(o,e,n,s,a){void 0===e&&(e=r),void 0===n&&(n=i),void 0===s&&(s=64),void 0===a&&(a=Float64Array),this.nodeSize=s,this.points=o;for(var p=o.length<65536?Uint16Array:Uint32Array,h=this.ids=new p(o.length),u=this.coords=new a(2*o.length),f=0;f<o.length;f++)h[f]=f,u[2*f]=e(o[f]),u[2*f+1]=n(o[f]);t(h,u,s,0,h.length-1,0)};s.prototype.range=function(t,o,e,n){return function(t,o,e,n,r,i,s){for(var a,p,h=[0,t.length-1,0],u=[];h.length;){var f=h.pop(),d=h.pop(),l=h.pop();if(d-l<=s)for(var c=l;c<=d;c++)a=o[2*c],p=o[2*c+1],a>=e&&a<=r&&p>=n&&p<=i&&u.push(t[c]);else{var m=Math.floor((l+d)/2);a=o[2*m],p=o[2*m+1],a>=e&&a<=r&&p>=n&&p<=i&&u.push(t[m]);var v=(f+1)%2;(0===f?e<=a:n<=p)&&(h.push(l),h.push(m-1),h.push(v)),(0===f?r>=a:i>=p)&&(h.push(m+1),h.push(d),h.push(v))}}return u}(this.ids,this.coords,t,o,e,n,this.nodeSize)},s.prototype.within=function(t,o,e){return function(t,o,e,r,i,s){for(var a=[0,t.length-1,0],p=[],h=i*i;a.length;){var u=a.pop(),f=a.pop(),d=a.pop();if(f-d<=s)for(var l=d;l<=f;l++)n(o[2*l],o[2*l+1],e,r)<=h&&p.push(t[l]);else{var c=Math.floor((d+f)/2),m=o[2*c],v=o[2*c+1];n(m,v,e,r)<=h&&p.push(t[c]);var g=(u+1)%2;(0===u?e-i<=m:r-i<=v)&&(a.push(d),a.push(c-1),a.push(g)),(0===u?e+i>=m:r+i>=v)&&(a.push(c+1),a.push(f),a.push(g))}}return p}(this.ids,this.coords,t,o,e,this.nodeSize)};var a={crs:"EPSG:3857",minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},p=function(t){this.options=g(Object.create(a),t),this.trees=new Array(this.options.maxZoom+1)};function h(t,o,e,n,r){return{x:t,y:o,zoom:1/0,id:e,parentId:-1,numPoints:n,properties:r}}function u(t,o,e){var n=t.geometry.coordinates,r=n[0],i=n[1];return{x:l(r,e),y:c(i,e),zoom:1/0,index:o,parentId:-1}}function f(t,o){return{type:"Feature",id:t.id,properties:d(t),geometry:{type:"Point",coordinates:[m(t.x,o),v(t.y,o)]}}}function d(t){var o=t.numPoints,e=o>=1e4?Math.round(o/1e3)+"k":o>=1e3?Math.round(o/100)/10+"k":o;return g(g({},t.properties),{cluster:!0,cluster_id:t.id,point_count:o,point_count_abbreviated:e})}function l(t,o){return t/360+.5}function c(t,o){var e;if(o&&"EPSG:3857"!==o)e=(90-t)/360;else{var n=Math.sin(t*Math.PI/180);e=.5-.25*Math.log((1+n)/(1-n))/Math.PI}return e<0?0:e>1?1:e}function m(t,o){return 360*(t-.5)}function v(t,o){if(o&&"EPSG:3857"!==o)return 90-360*t;var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function g(t,o){for(var e in o)t[e]=o[e];return t}function y(t){return t.x}function x(t){return t.y}return p.prototype.load=function(t){var o=this.options,e=o.log,n=o.minZoom,r=o.maxZoom,i=o.nodeSize,a=o.crs;e&&console.time("total time");var p="prepare "+t.length+" points";e&&console.time(p),this.points=t;for(var h=[],f=0;f<t.length;f++)t[f].geometry&&h.push(u(t[f],f,a));this.trees[r+1]=new s(h,y,x,i,Float32Array),e&&console.timeEnd(p);for(var d=r;d>=n;d--){var l=+Date.now();h=this._cluster(h,d),this.trees[d]=new s(h,y,x,i,Float32Array),e&&console.log("z%d: %d clusters in %dms",d,h.length,+Date.now()-l)}return e&&console.timeEnd("total time"),this},p.prototype.getClusters=function(t,o){var e=this.crs,n=((t[0]+180)%360+360)%360-180,r=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,s=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)n=-180,i=180;else if(n>i){var a=this.getClusters([n,r,180,s],o),p=this.getClusters([-180,r,i,s],o);return a.concat(p)}for(var h=this.trees[this._limitZoom(o)],u=[],d=0,m=h.range(l(n,e),c(s,e),l(i,e),c(r,e));d<m.length;d+=1){var v=m[d],g=h.points[v];u.push(g.numPoints?f(g,e):this.points[g.index])}return u},p.prototype.getChildren=function(t){var o=this.crs,e=this._getOriginId(t),n=this._getOriginZoom(t),r="No cluster with the specified id.",i=this.trees[n];if(!i)throw new Error(r);var s=i.points[e];if(!s)throw new Error(r);for(var a=this.options.radius/(this.options.extent*Math.pow(2,n-1)),p=[],h=0,u=i.within(s.x,s.y,a);h<u.length;h+=1){var d=u[h],l=i.points[d];l.parentId===t&&p.push(l.numPoints?f(l,o):this.points[l.index])}if(0===p.length)throw new Error(r);return p},p.prototype.getLeaves=function(t,o,e){o=o||10,e=e||0;var n=[];return this._appendLeaves(n,t,o,e,0),n},p.prototype.getTile=function(t,o,e){var n=this.trees[this._limitZoom(t)],r=Math.pow(2,t),i=this.options,s=i.extent,a=i.radius/s,p=(e-a)/r,h=(e+1+a)/r,u={features:[]};return this._addTileFeatures(n.range((o-a)/r,p,(o+1+a)/r,h),n.points,o,e,r,u),0===o&&this._addTileFeatures(n.range(1-a/r,p,1,h),n.points,r,e,r,u),o===r-1&&this._addTileFeatures(n.range(0,p,a/r,h),n.points,-1,e,r,u),u.features.length?u:null},p.prototype.getClusterExpansionZoom=function(t){for(var o=this._getOriginZoom(t)-1;o<=this.options.maxZoom;){var e=this.getChildren(t);if(o++,1!==e.length)break;t=e[0].properties.cluster_id}return o},p.prototype._appendLeaves=function(t,o,e,n,r){for(var i=0,s=this.getChildren(o);i<s.length;i+=1){var a=s[i],p=a.properties;if(p&&p.cluster?r+p.point_count<=n?r+=p.point_count:r=this._appendLeaves(t,p.cluster_id,e,n,r):r<n?r++:t.push(a),t.length===e)break}return r},p.prototype._addTileFeatures=function(t,o,e,n,r,i){for(var s=0,a=t;s<a.length;s+=1){var p=o[a[s]],h=p.numPoints,u={type:1,geometry:[[Math.round(this.options.extent*(p.x*r-e)),Math.round(this.options.extent*(p.y*r-n))]],tags:h?d(p):this.points[p.index].properties},f=void 0;h?f=p.id:this.options.generateId?f=p.index:this.points[p.index].id&&(f=this.points[p.index].id),void 0!==f&&(u.id=f),i.features.push(u)}},p.prototype._limitZoom=function(t){return Math.max(this.options.minZoom,Math.min(+t,this.options.maxZoom+1))},p.prototype._cluster=function(t,o){for(var e=[],n=this.options,r=n.radius,i=n.extent,s=n.reduce,a=n.minPoints,p=r/(i*Math.pow(2,o)),u=0;u<t.length;u++){var f=t[u];if(!(f.zoom<=o)){f.zoom=o;for(var d=this.trees[o+1],l=d.within(f.x,f.y,p),c=f.numPoints||1,m=c,v=0,g=l;v<g.length;v+=1){var y=g[v],x=d.points[y];x.zoom>o&&(m+=x.numPoints||1)}if(m>=a){for(var M=f.x*c,_=f.y*c,w=s&&c>1?this._map(f,!0):null,P=(u<<5)+(o+1)+this.points.length,z=0,Z=l;z<Z.length;z+=1){var I=Z[z],E=d.points[I];if(!(E.zoom<=o)){E.zoom=o;var S=E.numPoints||1;M+=E.x*S,_+=E.y*S,E.parentId=P,s&&(w||(w=this._map(f,!0)),s(w,this._map(E)))}}f.parentId=P,e.push(h(M/m,_/m,P,m,w))}else if(e.push(f),m>1)for(var
|
|
1
|
+
!function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t="undefined"!=typeof globalThis?globalThis:t||self).Supercluster=o()}(this,(function(){"use strict";function t(e,n,r,i,s,a){if(!(s-i<=r)){var p=i+s>>1;!function t(e,n,r,i,s,a){for(;s>i;){if(s-i>600){var p=s-i+1,h=r-i+1,u=Math.log(p),f=.5*Math.exp(2*u/3),d=.5*Math.sqrt(u*f*(p-f)/p)*(h-p/2<0?-1:1),l=Math.max(i,Math.floor(r-h*f/p+d)),c=Math.min(s,Math.floor(r+(p-h)*f/p+d));t(e,n,r,l,c,a)}var m=n[2*r+a],v=i,g=s;for(o(e,n,i,r),n[2*s+a]>m&&o(e,n,i,s);v<g;){for(o(e,n,v,g),v++,g--;n[2*v+a]<m;)v++;for(;n[2*g+a]>m;)g--}n[2*i+a]===m?o(e,n,i,g):(g++,o(e,n,g,s)),g<=r&&(i=g+1),r<=g&&(s=g-1)}}(e,n,p,i,s,a%2),t(e,n,r,i,p-1,a+1),t(e,n,r,p+1,s,a+1)}}function o(t,o,n,r){e(t,n,r),e(o,2*n,2*r),e(o,2*n+1,2*r+1)}function e(t,o,e){var n=t[o];t[o]=t[e],t[e]=n}function n(t,o,e,n){var r=t-e,i=o-n;return r*r+i*i}var r=function(t){return t[0]},i=function(t){return t[1]},s=function(o,e,n,s,a){void 0===e&&(e=r),void 0===n&&(n=i),void 0===s&&(s=64),void 0===a&&(a=Float64Array),this.nodeSize=s,this.points=o;for(var p=o.length<65536?Uint16Array:Uint32Array,h=this.ids=new p(o.length),u=this.coords=new a(2*o.length),f=0;f<o.length;f++)h[f]=f,u[2*f]=e(o[f]),u[2*f+1]=n(o[f]);t(h,u,s,0,h.length-1,0)};s.prototype.range=function(t,o,e,n){return function(t,o,e,n,r,i,s){for(var a,p,h=[0,t.length-1,0],u=[];h.length;){var f=h.pop(),d=h.pop(),l=h.pop();if(d-l<=s)for(var c=l;c<=d;c++)a=o[2*c],p=o[2*c+1],a>=e&&a<=r&&p>=n&&p<=i&&u.push(t[c]);else{var m=Math.floor((l+d)/2);a=o[2*m],p=o[2*m+1],a>=e&&a<=r&&p>=n&&p<=i&&u.push(t[m]);var v=(f+1)%2;(0===f?e<=a:n<=p)&&(h.push(l),h.push(m-1),h.push(v)),(0===f?r>=a:i>=p)&&(h.push(m+1),h.push(d),h.push(v))}}return u}(this.ids,this.coords,t,o,e,n,this.nodeSize)},s.prototype.within=function(t,o,e){return function(t,o,e,r,i,s){for(var a=[0,t.length-1,0],p=[],h=i*i;a.length;){var u=a.pop(),f=a.pop(),d=a.pop();if(f-d<=s)for(var l=d;l<=f;l++)n(o[2*l],o[2*l+1],e,r)<=h&&p.push(t[l]);else{var c=Math.floor((d+f)/2),m=o[2*c],v=o[2*c+1];n(m,v,e,r)<=h&&p.push(t[c]);var g=(u+1)%2;(0===u?e-i<=m:r-i<=v)&&(a.push(d),a.push(c-1),a.push(g)),(0===u?e+i>=m:r+i>=v)&&(a.push(c+1),a.push(f),a.push(g))}}return p}(this.ids,this.coords,t,o,e,this.nodeSize)};var a={crs:"EPSG:3857",minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},p=function(t){this.options=g(Object.create(a),t),this.trees=new Array(this.options.maxZoom+1)};function h(t,o,e,n,r){return{x:t,y:o,zoom:1/0,id:e,parentId:-1,numPoints:n,properties:r}}function u(t,o,e){var n=t.geometry.coordinates,r=n[0],i=n[1];return{x:l(r,e),y:c(i,e),zoom:1/0,index:o,parentId:-1}}function f(t,o){return{type:"Feature",id:t.id,properties:d(t),geometry:{type:"Point",coordinates:[m(t.x,o),v(t.y,o)]}}}function d(t){var o=t.numPoints,e=o>=1e4?Math.round(o/1e3)+"k":o>=1e3?Math.round(o/100)/10+"k":o;return g(g({},t.properties),{cluster:!0,cluster_id:t.id,point_count:o,point_count_abbreviated:e})}function l(t,o){return t/360+.5}function c(t,o){var e;if(o&&"EPSG:3857"!==o)e=(90-t)/360;else{var n=Math.sin(t*Math.PI/180);e=.5-.25*Math.log((1+n)/(1-n))/Math.PI}return e<0?0:e>1?1:e}function m(t,o){return 360*(t-.5)}function v(t,o){if(o&&"EPSG:3857"!==o)return 90-360*t;var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function g(t,o){for(var e in o)t[e]=o[e];return t}function y(t){return t.x}function x(t){return t.y}return p.prototype.load=function(t){var o=this.options,e=o.log,n=o.minZoom,r=o.maxZoom,i=o.nodeSize,a=o.crs;e&&console.time("total time");var p="prepare "+t.length+" points";e&&console.time(p),this.points=t;for(var h=[],f=0;f<t.length;f++)t[f].geometry&&h.push(u(t[f],f,a));this.trees[r+1]=new s(h,y,x,i,Float32Array),e&&console.timeEnd(p);for(var d=r;d>=n;d--){var l=+Date.now();h=this._cluster(h,d),this.trees[d]=new s(h,y,x,i,Float32Array),e&&console.log("z%d: %d clusters in %dms",d,h.length,+Date.now()-l)}return e&&console.timeEnd("total time"),this},p.prototype.getClusters=function(t,o){var e=this.crs,n=((t[0]+180)%360+360)%360-180,r=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,s=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)n=-180,i=180;else if(n>i){var a=this.getClusters([n,r,180,s],o),p=this.getClusters([-180,r,i,s],o);return a.concat(p)}for(var h=this.trees[this._limitZoom(o)],u=[],d=0,m=h.range(l(n,e),c(s,e),l(i,e),c(r,e));d<m.length;d+=1){var v=m[d],g=h.points[v];u.push(g.numPoints?f(g,e):this.points[g.index])}return u},p.prototype.getChildren=function(t){var o=this.crs,e=this._getOriginId(t),n=this._getOriginZoom(t),r="No cluster with the specified id.",i=this.trees[n];if(!i)throw new Error(r);var s=i.points[e];if(!s)throw new Error(r);for(var a=this.options.radius/(this.options.extent*Math.pow(2,n-1)),p=[],h=0,u=i.within(s.x,s.y,a);h<u.length;h+=1){var d=u[h],l=i.points[d];l.parentId===t&&p.push(l.numPoints?f(l,o):this.points[l.index])}if(0===p.length)throw new Error(r);return p},p.prototype.getLeaves=function(t,o,e){o=o||10,e=e||0;var n=[];return this._appendLeaves(n,t,o,e,0),n},p.prototype.getTile=function(t,o,e){var n=this.trees[this._limitZoom(t)],r=Math.pow(2,t),i=this.options,s=i.extent,a=i.radius/s,p=(e-a)/r,h=(e+1+a)/r,u={features:[]};return this._addTileFeatures(n.range((o-a)/r,p,(o+1+a)/r,h),n.points,o,e,r,u),0===o&&this._addTileFeatures(n.range(1-a/r,p,1,h),n.points,r,e,r,u),o===r-1&&this._addTileFeatures(n.range(0,p,a/r,h),n.points,-1,e,r,u),u.features.length?u:null},p.prototype.getClusterExpansionZoom=function(t){for(var o=this._getOriginZoom(t)-1;o<=this.options.maxZoom;){var e=this.getChildren(t);if(o++,1!==e.length)break;t=e[0].properties.cluster_id}return o},p.prototype._appendLeaves=function(t,o,e,n,r){for(var i=0,s=this.getChildren(o);i<s.length;i+=1){var a=s[i],p=a.properties;if(p&&p.cluster?r+p.point_count<=n?r+=p.point_count:r=this._appendLeaves(t,p.cluster_id,e,n,r):r<n?r++:t.push(a),t.length===e)break}return r},p.prototype._addTileFeatures=function(t,o,e,n,r,i){for(var s=0,a=t;s<a.length;s+=1){var p=o[a[s]],h=p.numPoints,u={type:1,geometry:[[Math.round(this.options.extent*(p.x*r-e)),Math.round(this.options.extent*(p.y*r-n))]],tags:h?d(p):this.points[p.index].properties},f=void 0;h?f=p.id:this.options.generateId?f=p.index:this.points[p.index].id&&(f=this.points[p.index].id),void 0!==f&&(u.id=f),i.features.push(u)}},p.prototype._limitZoom=function(t){return Math.max(this.options.minZoom,Math.min(+t,this.options.maxZoom+1))},p.prototype._cluster=function(t,o){for(var e=[],n=this.options,r=n.radius,i=n.extent,s=n.reduce,a=n.minPoints,p=r/(i*Math.pow(2,o)),u=0;u<t.length;u++){var f=t[u];if(!(f.zoom<=o)){f.zoom=o;for(var d=this.trees[o+1],l=d.within(f.x,f.y,p),c=f.numPoints||1,m=c,v=0,g=l;v<g.length;v+=1){var y=g[v],x=d.points[y];x.zoom>o&&(m+=x.numPoints||1)}if(m>=a){for(var M=f.x*c,_=f.y*c,w=s&&c>1?this._map(f,!0):null,P=(u<<5)+(o+1)+this.points.length,z=0,Z=l;z<Z.length;z+=1){var I=Z[z],E=d.points[I];if(!(E.zoom<=o)){E.zoom=o;var S=E.numPoints||1;M+=E.x*S,_+=E.y*S,E.parentId=P,s&&(w||(w=this._map(f,!0)),s(w,this._map(E)))}}f.parentId=P,e.push(h(M/m,_/m,P,m,w))}else if(e.push(f),m>1)for(var b=0,F=l;b<F.length;b+=1){var C=F[b],T=d.points[C];T.zoom<=o||(T.zoom=o,e.push(T))}}}return e},p.prototype._getOriginId=function(t){return t-this.points.length>>5},p.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},p.prototype._map=function(t,o){if(t.numPoints)return o?g({},t.properties):t.properties;var e=this.points[t.index].properties,n=this.options.map(e);return o&&n===e?g({},n):n},p}));
|