Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A very fast geospatial point clustering library for browsers and Node.

License

NotificationsYou must be signed in to change notification settings

chargetrip/supercluster

 
 

Repository files navigation

A very fast JavaScript library for geospatial point clustering for browsers and Node.

constindex=newSupercluster({radius:40,maxZoom:16});index.load(points);constclusters=index.getClusters([-180,-85,180,85],2);

Clustering 6 million points in Leaflet:

clustering demo on an interactive Leaflet map

Supercluster was built to power clustering inMapbox GL JS. Read about how it workson the Mapbox blog.

Install

Install using NPM (npm install supercluster) or Yarn (yarn add supercluster), then:

// import as a ES module in NodeimportSuperclusterfrom'supercluster';// import from a CDN in the browser:importSuperclusterfrom'https://esm.run/supercluster';

Or use it with an ordinary script tag in the browser:

<scriptsrc="https://unpkg.com/supercluster@8.0.0/dist/supercluster.min.js"></script>

Methods

load(points)

Loads an array ofGeoJSON Feature objects. Each feature'sgeometry must be aGeoJSON Point. Once loaded, index is immutable.

getClusters(bbox, zoom)

For the givenbbox array ([westLng, southLat, eastLng, northLat]) and integerzoom, returns an array of clusters and points asGeoJSON Feature objects.

getTile(z, x, y)

For a given zoom and x/y coordinates, returns ageojson-vt-compatible JSON tile object with cluster/point features.

getChildren(clusterId)

Returns the children of a cluster (on the next zoom level) given its id (cluster_id value from feature properties).

getLeaves(clusterId, limit = 10, offset = 0)

Returns all the points of a cluster (given itscluster_id), with pagination support:limit is the number of points to return (set toInfinity for all points),andoffset is the amount of points to skip (for pagination).

getClusterExpansionZoom(clusterId)

Returns the zoom on which the cluster expands into several children (useful for "click to zoom" feature) given the cluster'scluster_id.

Options

OptionDefaultDescription
minZoom0Minimum zoom level at which clusters are generated.
maxZoom16Maximum zoom level at which clusters are generated.
minPoints2Minimum number of points to form a cluster.
radius40Cluster radius, in pixels.
extent512(Tiles) Tile extent. Radius is calculated relative to this value.
nodeSize64Size of the KD-tree leaf node. Affects performance.
logfalseWhether timing info should be logged.
generateIdfalseWhether to generate ids for input features in vector tiles.

Property map/reduce options

In addition to the options above, Supercluster supports property aggregation with the following two options:

  • map: a function that returns cluster properties corresponding to a single point.
  • reduce: a reduce function that merges properties of two clusters into one.

Example of setting up asum cluster property that accumulates the sum ofmyValue property values:

constindex=newSupercluster({map:(props)=>({sum:props.myValue}),reduce:(accumulated,props)=>{accumulated.sum+=props.sum;}});

Themap/reduce options must satisfy these conditions to work correctly:

  • map must return a new object, not existingproperties of a point, otherwise it will get overwritten.
  • reduce must not mutate the second argument (props).

TypeScript

Install@types/supercluster for the TypeScript type definitions:

npm install @types/supercluster --save-dev

Developing Supercluster

npm install       # install dependenciesnpm run build     # generate dist/supercluster.js and dist/supercluster.min.jsnpm test          # run tests

About

A very fast geospatial point clustering library for browsers and Node.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript100.0%

[8]ページ先頭

©2009-2025 Movatter.jp