Skip to content

Smilliam/RTree

This branch is 4 commits ahead of leaflet-extras/RTree:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c210160 · Jan 29, 2018
Jan 29, 2018
Nov 7, 2013
Jan 29, 2018
Jan 29, 2018
Nov 29, 2013
Apr 11, 2014
Aug 22, 2014
Mar 14, 2013
Apr 12, 2014
Oct 3, 2013
Aug 22, 2014
Aug 22, 2014
Aug 22, 2014

Repository files navigation

#rTree Build Status

A non-recursive R-Tree library in pure JavaScript with no dependencies. Fork of Jon-Carlos Rivera's fantastic library which sadly seems not to be maintained. MIT Licensed.

##So far:

  • Bug fix when deleting points.
  • Common.js module.
  • Updated tests.
  • Factory function for constructor.
  • Method for dealing with GeoJSON.
  • All methods now accept callbacks.
  • Query by bbox instead of rectangle.
  • Submit to NPM.
  • Update examples.
  • add closure
  • add GruntFile
  • fix syntax (make it pass jslint)
  • more modular
  • that bug with deleting

##API

  • RTree ( [ Number max_node_width, Function callback ] )

###Parameters:

  • max_node_width : optional : The maximum width of a node before a split is performed1.

###Returns:

  • An empty rTree object.

###Usage:

  • Make a new rTree with a max node width of 10:
  • var myRTree = RTree(10);

##rTree.insert

  • rTree.insert ( Rectangle3 bounds, Object element)

###Parameters:

  • bounds : required : A minimally bounding box for element.
  • element : required : An object to add to the R-Tree.

###Returns:

  • True.

###Usage:

  • Insert a 10x10 object that starts at position 10x10:
  • myRTree.insert({x:10, y:10, w:10, h:10}, myObject);

##rTree.remove

  • rTree.remove ( Rectangle3 area _[, Object element)

###Parameters:

  • area : required : An area to search within.
  • element : optional : An object to remove from the R-Tree. If no object is specified, all elements that touch area are deleted.

###Returns:

  • An array of leafs deleted from the R-Tree.

###Usage:

  • Deletes all object that touch the 10x10 rectangle starting at position 10x10:
  • var myDelCount = myRTree.delete({x:10, y:10, w:10, h:10});
  • Delete only specific object if it touches the 10x10 rectangle starting at position 10x10:
  • var myDelCount = myRTree.delete({x:10, y:10, w:10, h:10}, specific_object);

##rTree.geoJSON:

  • rTree.geoJSON ( Object or Array geoJSON)

###Parameters

  • geoJSON : required : Either an Object representing a GeoJSON feature collection or an Array representing a list of GeoJSON features.

###Usage:

myRTree.geoJSON({
	"type":"FeatureCollection",
	"features":[
		{
			"type":"Feature",
			"geometry":{
				"type":"Point",
				"coordinates":[100,1]
			},
			"properties":{
				"prop0":"value0"
			}
		},
		{
			"type":"Feature",
			"geometry":{
				"type":"LineString",
				"coordinates":[
					[100,0],
					[101,1]
				]
			},
			"properties":{
				"prop0":"value0"
			}
		}
	]
});

##rTree.bbox:

  • rTree.bbox ( Bounds area)

###Parameters

  • area : required : Area to search, this can either be represented by a single parameter bounds array [[x1,y1],[x2,y2]], two parameters representing the southwest and northeast corners [x1,y1],[x2,y2], or 4 parameters of [x1,y1,x2,y2].

###Returns:

  • An array of matched features.

###Usage:

  • Search a 10x10 area that starts at position 10x10 (these are all equivalent):
  • var myObjects1 = myRTree.bbox([[10,10],[20,20]]);
  • var myObjects2 = myRTree.bbox([[10,10],[20,20]]);
  • var myObjects3 = myRTree.bbox([10,10],[20,20]);
  • var myObjects4 = myRTree.bbox([10,10],[20,20]);
  • var myObjects5 = myRTree.bbox(10,10,20,20);
  • var myObjects6 = myRTree.bbox(10,10,20,20);

##rTree.search

  • RTree.search ( Rectangle3 area [, Boolean return node, Array return_array ])

###Parameters:

  • area : required : An area to search within.
  • return node : optional : Whether to return the entire node, mainly internal option.
  • return array : optional : An existing array to add the results to, defaults to [], mainly internal option.

###Returns:

  • An array of objects that overlap or touch area.

###Usage:

  • Search a 10x10 area that starts at position 10x10:
  • var myObjects = myRTree.search({x:10, y:10, w:10, h:10});

###Notes

1 Default max node width is currently 6.

3 A Rectangle is any object with public x, y, w, h properties. The object itself is not saved or used directly but copies are made of its x, y, w, h properties.

About

R-Tree Library for Javascript, optimized for maps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.6%
  • HTML 1.4%