Package de.fhpotsdam.unfolding.examples.marker.advanced

Source Code of de.fhpotsdam.unfolding.examples.marker.advanced.ZoomDependentMarkerApp

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

import processing.core.PApplet;

import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.geo.Location;
import de.fhpotsdam.unfolding.marker.Marker;
import de.fhpotsdam.unfolding.marker.MarkerManager;
import de.fhpotsdam.unfolding.marker.SimplePointMarker;
import de.fhpotsdam.unfolding.utils.MapUtils;

/**
* Shows different set of markers depending on the zoom level.
*
* <p>
* Zoom in twice to see the detail markers.
* </p>
*
* This is one way of handling this, via different MarkerManager. You could also simply switch visibility of the markers
* and use only the default MarkerManager. Which to prefer depends on your use case, and your markers.
*/
public class ZoomDependentMarkerApp extends PApplet {

  UnfoldingMap map;
  MarkerManager<Marker> markerManager;
  MarkerManager<Marker> detailsMarkerManager;

  float oldZoomLevel = 0;

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

    map = new UnfoldingMap(this);
    map.zoomAndPanTo(new Location(41.50, -72.38), 5);
   
    MapUtils.createDefaultEventDispatcher(this, map);

    markerManager = populateMarkerManager();
    detailsMarkerManager = populateDetailsMarkerManager();

    map.addMarkerManager(markerManager);
    map.addMarkerManager(detailsMarkerManager);
  }

  public void draw() {
    background(0);

    float zoomLevel = map.getZoomLevel();
    if (oldZoomLevel != zoomLevel) {
      if (zoomLevel >= 7) {
        markerManager.disableDrawing();
        detailsMarkerManager.enableDrawing();
      } else {
        markerManager.enableDrawing();
        detailsMarkerManager.disableDrawing();
      }

      oldZoomLevel = zoomLevel;
    }

    map.draw();
  }

  private MarkerManager<Marker> populateMarkerManager() {
    MarkerManager<Marker> markerManager = new MarkerManager<Marker>();

    SimplePointMarker nycMarker = new SimplePointMarker(new Location(40.71, -73.99));
    nycMarker.setRadius(20);
    markerManager.addMarker(nycMarker);

    SimplePointMarker bostonMarker = new SimplePointMarker(new Location(42.35, -71.04));
    bostonMarker.setRadius(20);
    markerManager.addMarker(bostonMarker);

    return markerManager;
  }

  private MarkerManager<Marker> populateDetailsMarkerManager() {
    MarkerManager<Marker> markerManager = new MarkerManager<Marker>();

    Marker nycMarker1 = new SimplePointMarker(new Location(40.763, -73.979));
    markerManager.addMarker(nycMarker1);
    Marker nycMarker2 = new SimplePointMarker(new Location(40.852, -73.882));
    markerManager.addMarker(nycMarker2);
    Marker nycMarker3 = new SimplePointMarker(new Location(40.656, -73.944));
    markerManager.addMarker(nycMarker3);
    Marker nycMarker4 = new SimplePointMarker(new Location(40.739, -73.802));
    markerManager.addMarker(nycMarker4);

    Marker bostonMarker1 = new SimplePointMarker(new Location(42.3603, -71.060));
    markerManager.addMarker(bostonMarker1);
    Marker bostonMarker2 = new SimplePointMarker(new Location(42.3689, -71.097));
    markerManager.addMarker(bostonMarker2);

    return markerManager;
  }

}
TOP

Related Classes of de.fhpotsdam.unfolding.examples.marker.advanced.ZoomDependentMarkerApp

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.