Giter VIP home page Giter VIP logo

tangram's Introduction

Tangram: WebGL for OpenStreetMap

Circle CI

tangram-header

Tangram is a library for rendering 2D & 3D maps with WebGL. It is tuned for OpenStreetMap data, but supports any tiled source of GeoJSON/TopoJSON or binary vector tiles.

Quickstart

  1. Clone or download this repository:
  1. Start a webserver in the repository's directory:
  • in a terminal window, enter: python -m SimpleHTTPServer 8000
  • if that doesn't work, try: python -m http.server
  1. View the map at http://localhost:8000 (or whatever port you started the server on)

Demos

tangram-demo - A minimal demo showing the basic setup

gui-demo - Control styles in real-time with a gui

shaders-demo - More complex glsl shaders

highways-demo - Zoom-dependent styles and contextual filtering rules

Vector Tiles

Instead of using traditional image tiles, we render from vector tiles that contain the underlying source geometry for each tile's bounding box.

Mapzen provides a free vector tile service that can be used with Tangram for OpenStreetMap base layer data, with worldwide coverage updated daily. There is also an OSM.US-hosted alternative.

Tangram currently supports GeoJSON/TopoJSON tiles as well as the mapnik binary format, both of which can be generated by the Mapzen vector tile service.

Here's an example GeoJSON tile.

The library also includes a Leaflet plugin, Tangram.LeafletLayer, to provide basic web map pan/zoom functionality.

Development

If you'd like to contribute to the project or make changes to the source code for fun, you'll need to install development requirements and build the library:

npm install
make

The library will be minified in dist/, and index.html provides an example for rendering from different sources and simple Leaflet integration.

Testing

Tests are included to ensure that the code functions as expected. To run all of the tests:

npm test

Every time this runs, an new browser instance is created. If you wish to have a single browser instance and run the test suite against that instance do the following,

make karma-start

And then run the tests with,

make run-tests

Lint

We're using jshint to maintain code quality.

make lint

tangram's People

Contributors

bcamper avatar iwillig avatar meetar avatar patriciogonzalezvivo avatar karimnaaji avatar heffergm avatar hkrishna avatar

Stargazers

Andrew Kidoo avatar

Watchers

Andrew Kidoo 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.