GithubHelp home page GithubHelp logo

isabella232 / geo-viewport Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mapbox/geo-viewport

0.0 0.0 0.0 374 KB

Turns bounding boxes / extents into centerpoint & zoom combos for static maps.

License: BSD 2-Clause "Simplified" License

HTML 15.49% JavaScript 84.51%

geo-viewport's Introduction

Build Status codecov

geo-viewport

Turns bounding boxes / extents into centerpoint & zoom combos for static maps.

Works in node.js and browsers, via browserify or a script tag.

Install

npm install --save @mapbox/geo-viewport

Or use a plugin:

<script src='//api.tiles.mapbox.com/mapbox.js/plugins/geo-viewport/v0.2.1/geo-viewport.js'></script>

The script-tag include exports an object called geoViewport, with methods bounds and viewport documented below.

Example

Live example with Mapbox Static Map API

With Node

var geoViewport = require('@mapbox/geo-viewport');

geoViewport.viewport([
    5.668343999999995,
    45.111511000000014,
    5.852471999999996,
    45.26800200000002
], [640, 480])

// yields
// {
//     center: [
//         5.7604079999999955,
//         45.189756500000016
//     ],
//     zoom: 11
// }

In a browser:

<script src='//api.tiles.mapbox.com/mapbox.js/plugins/geo-viewport/v0.1.1/geo-viewport.js'></script>
<script>
var bounds = geoViewport.viewport([
    5.668343999999995,
    45.111511000000014,
    5.852471999999996,
    45.26800200000002
], [640, 480]);

var center = geoViewport.bounds(
  [-75.03,
  35.25],
  14,
  [600, 400]);

console.log(bounds);
console.log(center);
</script>

api

viewport(bounds, dimensions, minzoom, maxzoom, tileSize, allowFloat)

Given a WSEN array of bounds and a [x, y] array of pixel dimensions, return a { center: [lon, lat], zoom: zoom } viewport. Use allowFloat to retain float values in the output.

Example:

// first argument is the bounds, and the image is 640x480
geoViewport.viewport([
    5.6683, 45.111, 5.8524, 45.268
], [640, 480])

bounds(viewport, zoom, dimensions, tileSize)

Given a centerpoint as [lon, lat] or { lon, lat }, a zoom, and dimensions as [x, y], return a bounding box.

Example:

geoViewport.bounds([-75.03, 35.25], 14, [600, 400])

tile sizes

Be aware that these calculations are sensitive to tile size. The default size assumed by this library is 256x256px; however, Mapbox Vector Tiles are 512x512px.

For example, to calculating a bounding box for a classic raster-based 256x256 tile:

geoViewport.bounds([-75.03, 35.25], 14, [600, 400], 256)

// since 256 is default, you can omit the tileSize param
geoViewport.bounds([-75.03, 35.25], 14, [600, 400])

To calculate a bounding box for a Mapbox vector tile source, such as an image from the Mapbox Static Image API:

geoViewport.bounds([-75.03, 35.25], 14, [600, 400], 512)

There's a handy blog post discussing the issue here.

geo-viewport's People

Contributors

flippmoke avatar jingsam avatar mapsam avatar samanpwbb avatar teasealancs avatar timiyay avatar tmcw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.