Skip to content

Commit

Permalink
Add pointToTile & pointToTileFraction #1
Browse files Browse the repository at this point in the history
  • Loading branch information
DenisCarriere committed Jul 19, 2017
1 parent f263074 commit 8735d1a
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 13 deletions.
45 changes: 39 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,10 @@ mercator.tileToBBox(tile)
| [validatePixels(Pixels)](#validatepixels) | Validates Pixels coordinates |
| [maxBBox(BBox\[\])](#maxbbox) | Maximum extent of BBox |
| [validTile(tile)](#validtile) | Valid Tile |
| [longitude(degree)](#longitude) | Modifies a Longitude to fit within +/-180 degrees. |
| [latitude(degree)](#latitude) | Modifies a Latitude to fit within +/-90 degrees. |
| [longitude(degree)](#longitude) | Modifies a Longitude to fit within +/-180 degrees. |
| [latitude(degree)](#latitude) | Modifies a Latitude to fit within +/-90 degrees. |
| [pointToTile(lnglat, zoom)](#pointtotile) | Get the tile for a point at a specified zoom level |
| [pointToTileFraction(lnglat, zoom)](#pointtotilefraction) | Get the precise fractional tile location for a point at a zoom level |

## API

Expand All @@ -83,6 +85,37 @@ var id = mercator.hash([312, 480, 4])

Returns **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** hash

### pointToTile

Get the tile for a point at a specified zoom level
<https://github.com/mapbox/tilebelt>

**Parameters**

- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `zoom` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Zoom level

**Examples**

```javascript
var tile = mercator.pointToTile([1, 1], 12)
//= [ 2059, 2036, 12 ]
```

### pointToTileFraction

Get the precise fractional tile location for a point at a zoom level
<https://github.com/mapbox/tilebelt>

**Parameters**

- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `zoom` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Zoom level

Returns **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** tile fraction
var tile = mercator.pointToTileFraction([1, 1], 12)
//= [ 2059.3777777777777, 2036.6216445333432, 12 ]

### bboxToCenter

Converts BBox to Center
Expand All @@ -106,7 +139,7 @@ Converts LngLat coordinates to Meters coordinates.

**Parameters**

- `lnglat` **LngLat** Longitude (Meridians) & Latitude (Parallels) in decimal degrees
- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `validate` **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** validates LatLng coordinates (optional, default `true`)

**Examples**
Expand Down Expand Up @@ -160,7 +193,7 @@ Converts LngLat coordinates to TMS Tile.

**Parameters**

- `lnglat` **LngLat** Longitude (Meridians) & Latitude (Parallels) in decimal degrees
- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `zoom` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Zoom level
- `validate` **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** validates LatLng coordinates (optional, default `true`)

Expand All @@ -179,7 +212,7 @@ Converts LngLat coordinates to Google (XYZ) Tile.

**Parameters**

- `lnglat` **LngLat** Longitude (Meridians) & Latitude (Parallels) in decimal degrees
- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `zoom` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Zoom level
- `validate` **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** validates LatLng coordinates (optional, default `true`)

Expand Down Expand Up @@ -499,7 +532,7 @@ Validates LngLat coordinates

**Parameters**

- `lnglat` **LngLat** Longitude (Meridians) & Latitude (Parallels) in decimal degrees
- `lnglat` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** [Longitude, Latitude]
- `validate` **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** validates LatLng coordinates (optional, default `true`)

**Examples**
Expand Down
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,7 @@ function tileToQuadkey (tile, validate) {
return ''
}
var quadkey = ''
ty = (Math.pow(2, zoom) - 1) - ty
range(zoom, 0, -1).map(function (i) {
var digit = 0
var mask = 1 << (i - 1)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "global-mercator",
"version": "2.8.1",
"version": "2.8.2",
"description": "Tools to help with TMS, Quadkey & Google (XYZ) Tiles",
"repository": {
"type": "git",
Expand Down
12 changes: 6 additions & 6 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ test('tile', t => {
t.true(toBeCloseToArray(mercator.tileToBBoxMeters(TILE), BBOX_METERS, 0), 'tileToBBoxMeters')
t.deepEqual(mercator.tileToGoogle(TILE), GOOGLE, 'tileToGoogle')
t.deepEqual(mercator.tileToGoogle([0, 0, 0]), [0, 0, 0], 'tileToGoogle')
t.deepEqual(mercator.tileToQuadkey(TILE), '2120103232303', 'tileToQuadkey')
t.deepEqual(tilebelt.tileToQuadkey(TILE), '2120103232303', 'tileToQuadkey -- tilebelt')
t.deepEqual(mercator.tileToQuadkey(TILE), '0302321010121', 'tileToQuadkey')
t.deepEqual(tilebelt.tileToQuadkey(mercator.tileToGoogle(TILE)), '0302321010121', 'tileToQuadkey -- tilebelt')
t.deepEqual(mercator.tileToQuadkey([0, 0, 0]), '', 'tileToQuadkey -- null')
t.end()
})
Expand All @@ -132,8 +132,8 @@ test('quadkey', t => {
test('google', t => {
t.true(toBeCloseToArray(mercator.googleToBBox(GOOGLE), BBOX), 'googleToBbox')
t.true(toBeCloseToArray(mercator.googleToBBoxMeters(GOOGLE), BBOX_METERS, 0), 'googleToBBoxMeters')
t.deepEqual(mercator.googleToQuadkey(GOOGLE), '2120103232303', 'googleToQuadKey')
t.deepEqual(tilebelt.tileToQuadkey(mercator.googleToTile(GOOGLE)), '2120103232303', 'googleToQuadKey -- tilebelt')
t.deepEqual(mercator.googleToQuadkey(GOOGLE), '0302321010121', 'googleToQuadKey')
t.deepEqual(tilebelt.tileToQuadkey(GOOGLE), '0302321010121', 'googleToQuadKey -- tilebelt')
t.deepEqual(mercator.googleToTile(GOOGLE), TILE, 'googleToTile')
t.end()
})
Expand Down Expand Up @@ -220,7 +220,7 @@ test('point to tile verified', t => {
t.equal(tile[0], 292)
t.equal(tile[1], 391)
t.equal(tile[2], 10)
t.equal(mercator.tileToQuadkey(tile), '0320100322', 'pointToTile')
t.equal(tilebelt.tileToQuadkey(tile), '0320100322', 'pointToTile -- tilebelt')
t.equal(mercator.tileToQuadkey(tile), '2102322100', 'pointToTile')
t.equal(tilebelt.tileToQuadkey(mercator.tileToGoogle(tile)), '2102322100', 'pointToTile -- tilebelt')
t.end()
})

0 comments on commit 8735d1a

Please sign in to comment.