package sample6_mapkit;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D;
import javax.swing.JFrame;
import javax.swing.JToolTip;
import org.jxmapviewer.JXMapKit;
import org.jxmapviewer.JXMapViewer;
import org.jxmapviewer.OSMTileFactoryInfo;
import org.jxmapviewer.viewer.DefaultTileFactory;
import org.jxmapviewer.viewer.GeoPosition;
import org.jxmapviewer.viewer.TileFactoryInfo;
/**
* A simple sample application that uses JXMapKit
* @author Martin Steiger
*/
public class Sample6
{
/**
* @param args the program args (ignored)
*/
public static void main(String[] args)
{
final JXMapKit jXMapKit = new JXMapKit();
TileFactoryInfo info = new OSMTileFactoryInfo();
DefaultTileFactory tileFactory = new DefaultTileFactory(info);
jXMapKit.setTileFactory(tileFactory);
//location of Java
final GeoPosition gp = new GeoPosition(-7.502778, 111.263056);
final JToolTip tooltip = new JToolTip();
tooltip.setTipText("Java");
tooltip.setComponent(jXMapKit.getMainMap());
jXMapKit.getMainMap().add(tooltip);
jXMapKit.setZoom(11);
jXMapKit.setAddressLocation(gp);
jXMapKit.getMainMap().addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
// ignore
}
@Override
public void mouseMoved(MouseEvent e)
{
JXMapViewer map = jXMapKit.getMainMap();
// convert to world bitmap
Point2D worldPos = map.getTileFactory().geoToPixel(gp, map.getZoom());
// convert to screen
Rectangle rect = map.getViewportBounds();
int sx = (int) worldPos.getX() - rect.x;
int sy = (int) worldPos.getY() - rect.y;
Point screenPos = new Point(sx, sy);
// check if near the mouse
if (screenPos.distance(e.getPoint()) < 20)
{
screenPos.x -= tooltip.getWidth() / 2;
tooltip.setLocation(screenPos);
tooltip.setVisible(true);
}
else
{
tooltip.setVisible(false);
}
}
});
// Display the viewer in a JFrame
JFrame frame = new JFrame("JXMapviewer2 Example 6");
frame.getContentPane().add(jXMapKit);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}