A Crystal port of @mapbox/sphericalmercator Javascript package.
sphericalmercator
provides projection math for converting between mercator meters, screen pixels (of 256x256 or configurable-size tiles), and latitude/longitude.
-
Add the dependency to your
shard.yml
:dependencies: sphericalmercator: github: ferblape/sphericalmercator
-
Run
shards install
require "sphericalmercator"
Some datatypes are assumed to be arrays: ll
is [lon, lat]
, xy
and px
are [x, y]
.
merc = SphericalMercator.new(256)
Convert lon, lat to screen pixel x, y from 0, 0 origin, at a certain zoom level. The inverse of ll
Convert screen pixel value to lon, lat, at a certain zoom level. The inverse of px
Convert tile xyz value to bbox of the form [w, s, e, n]
x
{Number} x (longitude) number.y
{Number} y (latitude) number.zoom
{Number} zoom.tms_style
{Boolean} whether to compute using tms-style. (optional, default false)srs
{String} projection for resulting bbox (WGS84|900913). (optional, default WGS84)
Returns bbox array of values in form [w, s, e, n]
.
Convert bbox to xyz bounds
bbox
{Number} bbox in the form[w, s, e, n]
.zoom
{Number} zoom.tms_style
{Boolean} whether to compute using tms-style. (optional, default false)srs
{String} projection of input bbox (WGS84|900913). (optional, default WGS84)
Returns {Object} XYZ bounds containing minX, maxX, minY, maxY properties.
Convert bbox from 900913 to WGS84 or vice versa
bbox
{Number} bbox in the form[w, s, e, n]
.to
{String} projection of resulting bbox (WGS84|900913). (optional, default WGS84)
Returns bbox array of values in form [w, s, e, n]
.
Convert lon, lat values to mercator x, y
Convert mercator x, y values to lon, lat
If you want to develop a new function or fix an issue review the specs and original package source code.
- Fork it (https://github.com/ferblape/sphericalmercator/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Mapbox - original creators of the code
- Fernando Blat - creator and maintainer