Het is bij alle codes, als voorbeeld deze:
/*
* Bike Map showing all Cycle Hire stations and their available bikes.
*
* Example shows how to load and display CSV data. Shows bike stations directly (i.e. without markers)
*
* Created for Unfolding workshop at Royal College of Art.
* (c) 2014 Till Nagel, tillnagel.com
*/
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.utils.*;
String bikeAPIUrl = "http://api.bike-stats.co.uk/service/rest/bikestats?format=csv";
//String bikeFile = "bikestats.csv"; // in case URL goes down
String bikeDataFile = bikeAPIUrl;
UnfoldingMap map;
ArrayList<BikeStation> bikeStations = new ArrayList();
int maxBikesAvailable = 0;
void setup() {
size(800, 600, P2D);
smooth();
// Create interactive map centered around London
map = new UnfoldingMap(this);
map.zoomAndPanTo(12, new Location(51.500, -0.118));
MapUtils.createDefaultEventDispatcher(this, map);
map.setTweening(true);
// Load CSV data
Table bikeDataCSV = loadTable(bikeDataFile, "header, csv");
for (TableRow bikeStationRow : bikeDataCSV.rows()) {
// Create new empty object to store data
BikeStation bikeStation = new BikeStation();
// Read data from CSV
bikeStation.id = bikeStationRow.getInt("ID");
bikeStation.name = bikeStationRow.getString("Name");
bikeStation.bikesAvailable = bikeStationRow.getInt("BikesAvailable");
float lat = bikeStationRow.getFloat("Latitude");
float lng = bikeStationRow.getFloat("Longitude");
bikeStation.location = new Location(lat, lng);
// Add to list of all bike stations
bikeStations.add(bikeStation);
// Debug Info
//println("Added " + bikeStation.name + " with " + bikeStation.bikesAvailable + " bikes.";
// Statistics (well, sort of)
maxBikesAvailable = max(maxBikesAvailable, bikeStation.bikesAvailable);
}
println("Loaded " + bikeStations.size() + " bikeStations. Max bikes: " + maxBikesAvailable);
}
void draw() {
// Draw map and darken it a bit
map.draw();
fill(0, 200);
rect(0, 0, width, height);
noStroke();
// Iterate over all bike stations
for (BikeStation bikeStation : bikeStations) {
// Convert geo locations to screen positions
ScreenPosition pos = map.getScreenPosition(bikeStation.location);
// Map number of free bikes to radius of circle
float s = map(bikeStation.bikesAvailable, 0, maxBikesAvailable, 1, 50);
// Draw circle according to available bikes
fill(255, 0, 255, 50);
ellipse(pos.x, pos.y, s, s);
if (bikeStation.showLabel) {
fill(200);
text(bikeStation.name, pos.x - textWidth(bikeStation.name)/2, pos.y);
}
}
}
void mouseClicked() {
// Simple way of displaying bike station names. Use markers for single station selection.
for (BikeStation bikeStation : bikeStations) {
bikeStation.showLabel = false;
ScreenPosition pos = map.getScreenPosition(bikeStation.location);
if (dist(pos.x, pos.y, mouseX, mouseY) < 10) {
bikeStation.showLabel = true;
}
}
}
Ik krijg de melding:
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.RuntimeException: java.lang.NullPointerException
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
at javax.media.opengl.Threading.invoke(Threading.java:191)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at processing.core.PApplet.createReader(PApplet.java:7045)
at processing.data.Table.parse(Table.java:348)
at processing.data.Table.<init>(Table.java:152)
at processing.core.PApplet.loadTable(PApplet.java:6505)
at BikeObjectsMap.setup(BikeObjectsMap.java:53)
at processing.core.PApplet.handleDraw(PApplet.java:2361)
at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1289)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1300)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Could not run the sketch (Target VM failed to initialize).
For more information, read revisions.txt and Help ? Troubleshooting.