Project

geocluster

0.01
No commit activity in last 3 years
No release in over 3 years
Clustering coordinates made easy.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0

Runtime

 Project Readme

Geocluster

Geocluster takes an array of geographic coordinates and converts them into clusters of different size and weight.

Example usage with Google Maps:

Example usage

Installation

Add this line to your application's Gemfile:

  gem 'geocluster'

And then execute:

  $ bundle

Or install it yourself as:

  $ gem install geocluster

Usage

You can cluster coordinates using

  Geocluster.cluster_coordinates(coordinates, options = {})

and passing it an array of the coordinates you would like to cluster. For example:

  Geocluster.cluster_coordinates(
    [[52.5200065, 13.404954], [52.5094156, 13.4533962], [52.3941887, 13.072691]]
  )
  # => [{ :coordinates => [52.3941887, 13.072691000000003], :count => 3}]
  # Returns the position of your new cluster associated
  # with the number of coordinates it consumed.

You can also pass the following options (default values are assigned below):

  options = {
    :precision => 3, # the higher, the finer the clusters will be
    :limit => nil,   # max number of returned clusters; set to nil to get all
    :nucleus => true # if true, centers clusters over where most of its coordinates are;
                     # if false, centers clusters geographically among all coordinates it absorbs
  }

Example usage:

  Geocluster.cluster_coordinates(
    [[52.5200065, 13.404954], [52.5094156, 13.4533962], [52.3941887, 13.072691]],
    precision: 5,
    limit: 2,
    nucleus: false
  )

Clustering may come in handy for displaying a myriad of coordinates on a map.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request