From 8c768329abe312383605d4a027e9c10a7870eaaa Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Fri, 4 Aug 2017 10:13:46 +0530 Subject: [PATCH 1/3] adding point to tile and test --- index.js | 30 +++++++++++++++++++++++++++++- package.json | 2 +- test.js | 14 ++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 25d0e93..e99c32b 100644 --- a/index.js +++ b/index.js @@ -280,6 +280,33 @@ function pointToTileFraction(lon, lat, z) { return [x, y, z]; } + +/** + * Get the center of a tile as Point GeoJSON + * + * @name tileToCenterPoint + * @param {Array} bbox + * @returns {Feature} + * @example + * var point = tileToCenterPoint([ -178, 84, -177, 85 ]) + * //=tile + * @param {Array} tile + * @returns {Array} tile fraction + * var tile = pointToTileFraction(30.5, 50.5, 15) + * //=tile + */ + +function tileToCenterPoint(tile) { + var bbox = tileToBBOX(tile) + + return {type: 'Point', + coordinates: [ + (bbox[0] + bbox[2]) / 2, + (bbox[1] + bbox[3]) / 2 + ] + } +} + module.exports = { tileToGeoJSON: tileToGeoJSON, tileToBBOX: tileToBBOX, @@ -293,5 +320,6 @@ module.exports = { quadkeyToTile: quadkeyToTile, pointToTile: pointToTile, bboxToTile: bboxToTile, - pointToTileFraction: pointToTileFraction + pointToTileFraction: pointToTileFraction, + tileToCenterPoint: tileToCenterPoint }; diff --git a/package.json b/package.json index ba011d7..3a33485 100644 --- a/package.json +++ b/package.json @@ -28,4 +28,4 @@ "tap": "^1.3.4" }, "dependencies": {} -} \ No newline at end of file +} diff --git a/test.js b/test.js index 5367f04..19f1dd2 100644 --- a/test.js +++ b/test.js @@ -214,3 +214,17 @@ test('pointToTile -- cross meridian', function (t) { t.deepEqual(tilebelt.bboxToTile([-0.000001, -85, 1000000, 85]), [0, 0, 0]); t.end(); }); + +test('tile to center point', function (t) { + var tile = tilebelt.pointToTile(0, 0, 10); + var center = tilebelt.tileToCenterPoint(tile) + t.deepEqual(center, + { type: 'Point', coordinates: [0.17578125, -0.17578014699614353]}) + + var center2 = tilebelt.tileToCenterPoint(tilebelt.quadkeyToTile('300000000000000')) + t.deepEqual(center2, + { type: 'Point', coordinates: [0.0054931640625, -0.005493164028840922]} + ) + + t.end(); +}); From 72e025b388b1d523a1c1a287e403f8e1e62a79b9 Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Fri, 4 Aug 2017 10:17:15 +0530 Subject: [PATCH 2/3] adding description --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6da9152..46e14f8 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ tileToQuadkey(tile) | get the quadkey for a tile quadkeyToTile(quadkey) | get the tile for a quadkey pointToTile(lon, lat, zoom) | get the tile for a point at a specified zoom level pointToTileFraction(lon, lat, zoom) | get the precise fractional tile location for a point at a zoom level +tileToCenterPoint(tile) | Get the GeoJSON geometry of the center of the tile. ## tests From f6f7a7faf527c68c49233d5b42a51e6a5951e933 Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Fri, 4 Aug 2017 10:20:45 +0530 Subject: [PATCH 3/3] example for tileToCenterPoint --- index.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index e99c32b..e0bc687 100644 --- a/index.js +++ b/index.js @@ -288,12 +288,8 @@ function pointToTileFraction(lon, lat, z) { * @param {Array} bbox * @returns {Feature} * @example - * var point = tileToCenterPoint([ -178, 84, -177, 85 ]) - * //=tile - * @param {Array} tile - * @returns {Array} tile fraction - * var tile = pointToTileFraction(30.5, 50.5, 15) - * //=tile + * var point = tileToCenterPoint([0,0,10]) + * //= point */ function tileToCenterPoint(tile) {