Code Monkey home page Code Monkey logo

unfolding's Introduction

Unfolding

Create interactive thematic maps and geovisualizations.

About

Interaction Events

Unfolding enables you to rapidly create interactive maps. Basic interactions such as Zoom & Pan are included. Other functionality such as Overview+Detail, or multitouch gestures can be easily added.

Data Visualization

Simply create geo-positioned markers to display data on a map. The visual style can be adapted freely. The library supports any user-defined shapes, such as points, lines, or polygons.

Styled Maps

Unfolding is a tile-based map library. Map tiles can have various geographic features, and come in all kind of styles. It comes with various map providers, such as OpenStreetMap or TileMill.

Download

Get Unfolding from http://unfoldingmaps.org/ or directly from here: http://unfoldingmaps.org/downloads

Credit

Developed at Interaction Design Lab, FH Potsdam, the HCI group, KU Leuven, and MIT Senseable City Labs. See http://unfoldingmaps.org/contact.html for the full credits.

License

You may use Unfolding under the terms of the MIT License. See http://en.wikipedia.org/wiki/MIT_License for more information.

Copyright (C) 2015 Till Nagel, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

unfolding's People

Contributors

chmullig avatar codeanticode avatar cpietsch avatar jonnyelliot avatar maerzhase avatar mphasize avatar mrloh avatar piranha32 avatar sotte avatar tillnagel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unfolding's Issues

Unfolding not compatible with Processing 2.0

None of the Unfolding examples run with Processing 2.0b5 and b6. Replacing the GLGraphics calls in size() with any of the following:

size(100, 100);
size(100, 100, P3D);
size(100, 100, P2D);
size(100, 100, OPENGL);

gives the error:
You need to use "Import Library to add processing.core.PGraphics3D to your sketch"
These changes run correctly under Processing 1.5.1. A quick glance at the source suggests that PGraphics3D has been moved to processing.opengl but I'm don't really feel qualified to advise further than that.

Unfolding w/ GLGraphics on Ubuntu

It seems that recently there have been some updates (Java? OpenGL? something else?), so that Unfolding does not work properly on Ubuntu anymore.

Please check, and verify library versions.

@sotte Please take a look, too.

Find a better way to include JavaDoc

I included the javadoc and added a (temp.) link in the header. Can you find a better way to include this?

See _include/themes/unfolding/default.html in line 65.

Use internal events for public map interaction methods

map.zoomTo() directly uses internal zoom method, but could use events to fire zoom method (resp pan etc). Advantage would be that all interactions work in the event system, e.g. a listening second map still could react to it.

(potentially)

Marker seem to be rendered differently in GLGraphics

When rendering markers in GLGraphics, the result is slightly different than applying the same drawing methods directly onto the canvas.

Marker render bug

Top is the marker, bottom is the direct one. Each one is a red circle with a text label.

On the left you see there is no difference with Processig2D renderer, but on the right with GLGraphics there is a slight color difference, and some weird problems with the circle border.

(This is not due to some sub-pixel render problems. In both cases, the coordinates to draw for have been rounded.)

EventDispatcher should be a Singleton

All events are registered (broadcasting and listening) to one EventDispatcher. We are using only one, anyway (and I cannot think of a scenario where two or more would be useful).

Marker needs .isInsideByLocation() function

For better performances my program needs to check in advance if a Marker is inside of one of a list of SimplePolygonMarkers.

Concrete Example:
I have a list of countries and a list of airports. I only want to display the airports of the country I hover. When I check at runtime, it's getting real slow. But if I would have the chance to sort the airports by country in advance I think it would be faster.

And I think it would make more sense if one don't have to get the Location of a given Marker parse it into a ScreenPosition to compare it to the Location of another Marker.

Or am I completely wrong?

Unify GPX reader examples

There are three different examples using the same dataset. One is reading gpx and speed manually, one using markers via the (core) GPXReader without speed, and one uses markers via the extended GPXSpeedReader.

Using custom tiles in Processing IDE

If you use a custom map tiles set in the Processing IDE you need manually copy the SQLite jar to the code or library folder and then point with an absolute path to the TileMill mbtiles file. Maybe there is a easier solution for that?

Sorting of Examples

Is there any known sorting criteria for the examples overview on the page? I don't get it.

Example: 2 Overview + 1 Detail
One static and one dynamic overview map

Example: Overview + Detail with Viewport
Overview and a detail map with viewport finder

Example: Connection Marker
Drawing connections between locations via extended Markers

Example: Overview + Detail
Simple overview and a detail map

@tillnagel @sotte @flrn

Shapes of very small polygon markers are not filled

For polygon marker with very small sizes, i.e. just a couple of hundred meters afar the polygon shape stays transparent. The stroke lines between the single vertices are correctly displayed.

It might be due to some PGraphics behaviour, that polygons which have no dimension in normal, unscaled view will not be filled. In Unfolding we are scaling the (inner)map a lot, if the zoom level is very high. Very weird behaviour.

Implement CompassUI (and other UI elements) as MapEventListener

At the moment, CompassUI needs to be constructed with the map. We already have an event mechanism in place, which could be used.

Implement MapEventListener, and listen to events in onManipulation(...).
For that, all map manipulations need to fire events, not only user interaction-based ones. (e.g. mouseHandler fires zoom-event on double-click, but time-based automatic rotating does not fire an rotate-event)

unfolding_app_template and libs?

I created an ant task to create the unfolding_app_template automatically. First of all, please try it and verify that it works.

ant unfolding_app_template

It compiles all files, builds a unfolding.jar, puts all files for the unfolding_app_template together and zips it (in dist/). Any suggestions?

A few questions:
Currently the following jars are distributed but not used.

  • json4processing.jar
  • junit-4.10.jar
  • libTUIO.jar

Should I remove them?

Furthermore, what should be done with the libNative files. Should we ship all platforms (win/linux/maxosx)?

Pages: Exhibition grid breaks incorrectly

If right side teaser are shorter than left side, the following row starts with right hand teaser.

Hot-fixed it by increasing the min-height to 380px. Should be fixed for all cases.

screenshot of exhibition grid

Centroid of polygon leans towards many vertices.

Currently, the centroid of a set of locations/vertices tends to move towards borders where many vertices are defined. This is due to the algorithm ("minimizes the sum of squared Euclidean distances between itself and each point in the set").

We need to calculate the correct centroid of a polygon.

Red circle indicates the centroid currently calculated by Unfolding. Green shows the correct centroid.

Centroid map example

Pages: Add sidebar for content.

It would be great if we can use the sidebar also in the content. At the moment, it's only used for the teaser row at the top.

In Markdown we could allow some marking to define sidebar content. This could be rendered by closing the current span4-div, and opening a span8-div, putting in the content, closing the span8-div, and opening a new span4-div.

Tweening for zoom and pan

Animated transitions between different zoom levels work, but for panning this seems to be broken.

Fix it!

Processing distribution is missing

For now, the dist export only creates the Unfolding.jar as well as Eclipse application templates. The export for Processing is needed, too.

Could be inspired by the previously used ant script by Schlegel. Currently, the exported lib does work in Processing, but no full library (incl examples etc) is created.

Marker Style

  • marker standart
  • marker active
  • marker label
  • marker image

Clear Tile caches and reload everything from MapProvider

In case of more complex MapProviders that actually support different options or parameters, we need a mechanism that allows us to refresh the map, when we change a parameter/option.

I propose, that we set the Options directly with the MapProvider and then tell the Map to throw away caches and reload the tiles from the provider.

Other suggestions / ideas for this?

(My use case are tiles from CartoDB where I can set SQL and Styling options directly in the tile-url, so after changing this, I need to update the Map)

Enable tile info and borders for debug

While this functionality is already implemented, the methods are not accessible from the client application.

Create public facade method in Map to switch tile borders, and information.

protected TileLoader createTileLoader(Coordinate coord) {
TileLoader tl = new TileLoader(papplet, provider, this, coord);
tl.showDebugBorder(); // Shows a border around each tile
// tl.showTileCoordinates(); // Shows coordinates and zoom atop each tile
return tl;
}

Videos in gh-pages do not work

Videos do not work anymore in gh-pages.

On the Exhibition main page there still is some code for embedding a video, but that does not work. First, the video.js seems to be missing. Secondly, the values seem to be set somewhere else. Changing exhibition/index.md does not result in a change in the generated page.

Also, we need both options: Add a video in the gray bar (set via page properties), but also in the content section.

Default CloudMade ID is not working.

I get the following errors

The file "http://a.tile.cloudmade.com/607e6483654b5c47b9056791d607ab74/67954/256/11/1097/672.png" is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.
The file "http://a.tile.cloudmade.com/607e6483654b5c47b9056791d607ab74/67954/256/11/1102/670.png" is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.

...

@cpietsch Is there a new CloudMade ID?

Should the tutorials be in the wiki or directly on the homepage?

I think we should use githubs project pages and embed the tutorials there. See #3
Furthermore it's really easy to edit the homepage and tutorials if we use github pages.

The wiki is separate from the code and therefore gets out of date really quickly.

What do you think?!

changed style for the page

http://tillnagel.github.com/unfolding/

  • added a custom header which looks like the old website.
    @flrn unfortunately i didn't know how to compile the unfolding/assets/themes/unfolding/bootstrap/stylesheets/* into one new bootstrap css file. so i made a custom non bootstrap navigation.
  • changed the font size to 14px
  • new background
  • buttons look different
  • footer is black now
  • header uses the full width
  • here and there stuff

there need to be some changes in the html markup like to put the author in a separate span

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.