public void setup() {
    size(800, 600, OPENGL);
    // size(800, 600);
    smooth();

    map = new UnfoldingMap(this);
    map.zoomToLevel(3);
    map.panTo(new Location(40f, -98f));
    MapUtils.createDefaultEventDispatcher(this, map);

    Location berlinLocation = new Location(40f, -98f);
    berlinMarker = new TestMarker(berlinLocation);
    berlinMarker.setColor(color(255, 0, 0, 100));
    berlinMarker.setStrokeColor(color(255, 0, 0));
    berlinMarker.setStrokeWeight(2);
    map.addMarkers(berlinMarker);
  }
  public void draw() {
    background(240);
    map.draw();

    ScreenPosition pos = berlinMarker.getScreenPosition(map);
    fill(255, 0, 0, 100);
    stroke(255, 0, 0);
    strokeWeight(2);
    ellipse(pos.x, pos.y + 30, 20, 20);
    println("o:" + pos.x + ", " + pos.y);
    fill(0);
    text("Xylophon", pos.x + 20, pos.y + 30);
  }
  // A suggested helper method that takes in an earthquake feature and
  // returns a SimplePointMarker for that earthquake
  // Done: Implement this method and call it from setUp, if it helps
  private SimplePointMarker createMarker(PointFeature feature) {
    // finish implementing and use this method, if it helps.
    SimplePointMarker spm = new SimplePointMarker(feature.getLocation());

    Object magnitudeProp = feature.getProperty("magnitude");

    float magnitude = Float.parseFloat(magnitudeProp.toString());

    if (magnitude < 4.0) {
      spm.setColor(color(0, 0, 255));
      spm.setRadius(5);
    } else if (magnitude >= 4.0 && magnitude < 5) {
      spm.setColor(color(255, 255, 0));
      spm.setRadius(10);
    } else {
      spm.setColor(color(255, 0, 0));
      spm.setRadius(15);
    }
    return spm;
  }