Package de.fhpotsdam.unfolding.examples.marker.labelmarker

Source Code of de.fhpotsdam.unfolding.examples.marker.labelmarker.ManualLabelMarkerApp

package de.fhpotsdam.unfolding.examples.marker.labelmarker;

import java.util.ArrayList;
import java.util.List;

import processing.core.PApplet;
import processing.core.PFont;

import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.data.Feature;
import de.fhpotsdam.unfolding.data.GeoRSSReader;
import de.fhpotsdam.unfolding.data.PointFeature;
import de.fhpotsdam.unfolding.examples.marker.labelmarker.LabeledMarker;
import de.fhpotsdam.unfolding.examples.marker.labelmarker.MultiLabeledMarkerApp;
import de.fhpotsdam.unfolding.marker.Marker;
import de.fhpotsdam.unfolding.utils.MapUtils;

/**
* Creates custom markers from features, and manually populates label from a data property. Different to
* {@link MultiLabeledMarkerApp}.
*/
public class ManualLabelMarkerApp extends PApplet {

  UnfoldingMap map;

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

    map = new UnfoldingMap(this, "map", 50, 50, 700, 500);
    map.zoomToLevel(2);
    MapUtils.createDefaultEventDispatcher(this, map);

    List<Feature> features = GeoRSSReader.loadData(this, "data/bbc-georss-test.xml");
    List<Marker> markers = createLabeledMarkers(features);
    map.addMarkers(markers);
  }

  public void draw() {
    background(240);
    map.draw();
  }

  public void mouseMoved() {
    // Deselect all marker
    for (Marker marker : map.getMarkers()) {
      marker.setSelected(false);
    }

    // Select hit marker
    Marker marker = map.getFirstHitMarker(mouseX, mouseY);
    // NB: Use mm.getHitMarkers(x, y) for multi-selection.
    if (marker != null) {
      marker.setSelected(true);
    }
  }

  public List<Marker> createLabeledMarkers(List<Feature> features) {
    PFont font = loadFont("ui/OpenSans-12.vlw");
    List<Marker> markers = new ArrayList<Marker>();
    for (Feature feature : features) {
      String label = feature.getStringProperty("title");
      PointFeature pointFeature = (PointFeature) feature;
      Marker marker = new LabeledMarker(pointFeature.getLocation(), label, font, 15);
      markers.add(marker);
    }
    return markers;
  }
}
TOP

Related Classes of de.fhpotsdam.unfolding.examples.marker.labelmarker.ManualLabelMarkerApp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.