Package de.fhpotsdam.unfolding.examples.multi.overlay

Source Code of de.fhpotsdam.unfolding.examples.multi.overlay.SatelliteOverlayApp

package de.fhpotsdam.unfolding.examples.multi.overlay;

import processing.core.PApplet;

import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.geo.Location;
import de.fhpotsdam.unfolding.providers.Microsoft;
import de.fhpotsdam.unfolding.utils.MapUtils;

/**
* A small map is laid atop the interactive background map. The overlay map shows the satellite view, while the
* background map shows a simplified map. Interaction is reflected in both maps, so the overlay map acts as an
* interactive window to another map layer.
*
* Demonstrates how to position a second map according to its position on the background map.
*/
public class SatelliteOverlayApp extends PApplet {

  UnfoldingMap mapOverview;
  UnfoldingMap mapOverlay;

  float mapZoomX = 100;
  float mapZoomY = 100;

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

    mapOverview = new UnfoldingMap(this, "static", 0, 0, 750, 600);
    mapOverview.zoomToLevel(2);
    mapOverlay = new UnfoldingMap(this, "zoom", 400, 300, 150, 150, true, false, new Microsoft.AerialProvider());
    mapOverlay.zoomToLevel(2);

    MapUtils.createDefaultEventDispatcher(this, mapOverview, mapOverlay);
  }

  public void draw() {
    background(0);

    mapOverview.draw();
    mapOverlay.draw();

    noFill();
    strokeWeight(5);
    strokeJoin(MITER);
    stroke(40, 50);
    rect(mapZoomX, mapZoomY, 150, 150);
  }

  public void mouseDragged() {
    moveOverlay(mouseX, mouseY);
  }

  public void mouseMoved() {
    moveOverlay(mouseX, mouseY);
  }

  private void moveOverlay(int x, int y) {
    // Move the small map to mouse position, but center it around it
    mapZoomX = x - mapOverlay.mapDisplay.getWidth() / 2;
    mapZoomY = y - mapOverlay.mapDisplay.getHeight() / 2;
    mapOverlay.move(mapZoomX, mapZoomY);

    // Read geo location of the mouse position from the background map
    Location locationOnOverviewMap = mapOverview.getLocation(x, y);
    // Pan the small map toward that location
    mapOverlay.panTo(locationOnOverviewMap);
  }

}
TOP

Related Classes of de.fhpotsdam.unfolding.examples.multi.overlay.SatelliteOverlayApp

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.