npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

leaflet-quadtree

v0.0.2

Published

A leaflet plugin that implements a quadtree

Downloads

21

Readme

Leaflet.Quadtree

Build Status Coverage Status npm version dependencies

Leaflet plugin that implements a quadtree for efficient retrieval of visible features' properties

To see the plugin in action just click one of the following links:

  • Huge number of elements: 1 million markers are created in random places and the quadtree is used to fetch the visible ones and add them to the map when it's moved. You can find the demo here (Alert: The browser tab might report itself as not working when creating the markers, just wait for it to finish)
  • Visible feature properties retrieval: Sample data is loaded into the map and the quadtree is used to efficiently crawl the features of each visible element. You can find the demo here
  • Marker culling: On each click a numbered marker is created, the quadtree is updated and the visible elements' numbers are shown. You can find the demo here
  • Quadtree construction: On each click a marker is created and the resulting quadtree is shown. You can find the demo here

Usage

Create a marker or a polygon and add it to the quadtree. It can even be your own class, it only has to implement the getLatLng() or the getBounds() methods.

// create the quadtree with the options you want
var quadtree = L.quadtree({maxObjectsPerLevel: 4});
...

// add the markers to the quadtree
quadtree.add(marker);
...

//retrieve the visible markers or polygons inside some bounds
//map bounds are used in the examples but any bounds can be used
var bounds = map.getBounds();
var colliders = quadtree.getColliders(bounds);

Documentation

Constructor

Constructs a quadtree object

var quadtree = L.quadtree(options);

Options

Add element to the quadtree

Adds an element to the quatree. Any object that implements the getLatLng() or the getBounds() methods is supported

var quadtree = L.quadtree(options);
...
quadtree.add(marker);

Get colliders

Gets an array with the elements that fall inside the given bounds

var quadtree = L.quadtree(options);
...
var colliders = quadtree.getColliders(bounds);

Get the possible colliders

Gets an array with the elements that might fall inside the given bounds. This method is faster than the previous one although it's inexact, you can use it if you only need an upper bound of the visible elements. This method returns the elements found on the leaf nodes that intersect the given bounds

var quadtree = L.quadtree(options);
...
var colliders = quadtree.getPossibleColliders(bounds);

Get quadtree stats

Gets an array with the number of elements inside each node. If a node has childs an array is returned with the elements of its child nodes in the following order [NW, NE, SW, SE]

var quadtree = L.quadtree(options);
...
var stats = quadtree.getQuadtreeStats();

License

Copyright (c) 2017- ibesora (BEERWARE License)
See LICENSE for more info.