JXMapKit Koordinaten korrigieren

J

JXMapKit

Gast
Hallo Leute,

ich nutze das JXMapKit um in einer Anwendung eine kleine Karte anzuzeigen.
Es ist möglich auf dieser Karte durch aufspannen eines Rects einen Berich
auszuwählen. Ich lese dann die Koordinaten und somit alle darin vorkommenden
Städte aus.

Das funktioniert wunderbar bis auf eine Sache:

Die Karte lässt sich unendlich weit nach links oder Rechts verschieben und
wiederholt dabei immer wieder das Kartenmaterial (das ist eine gewünschte Funktion).
Dadurch verändern sich allerdings auch die Koordinaten und ich muss sie irgendwie
korrigieren.

Beispiel:

Normalerweise liegt Hamburg bei 53.55 / 10
Wenn ich die Karte nun einmal ganz nach links
verschiebe bis wieder Hamburg auftaucht liegt
Hamburg bei 53.55 / -349,9805

Gibt es da eine Intelligente Möglichkeit das zu korrigieren?
 
J

JXMapKit

Gast
Also zur Ergänzung:

Klar ist, dass es sich natürlich immer um 360 verringert bzw. erhöht wenn man nach rechts dreht.
Klar ist allerdings nicht, wie ich ermitteln kann, wie oft die Karte gedreht worden ist.
 
J

JXMapKit

Gast
Hmm... habs nach wie vor nicht lösen können.

Mal ein wenig relevanten Code mit Kommentaren, vllt. hat jemand eine Idee:

Java:
public class MapViewer extends MouseAdapter implements Painter<JXMapViewer> {
	private  final JXMapKit mapKit = new JXMapKit();
	private final JPanel mapPanel = new JPanel();
	private Rectangle rect, start, end = null;
	private GeoPosition startPos = null;
	private GeoPosition endPos = null;
	private NumberFormat nf = NumberFormat.getInstance();
	
	public MapViewer() {
		mapKit.setDefaultProvider(DefaultProviders.OpenStreetMaps);
		mapKit.setPreferredSize(new Dimension(380, 310));
		mapKit.setMiniMapVisible(false);
		mapKit.setAddressLocationShown(false);
		mapKit.setDataProviderCreditShown(false);
		mapKit.getMainMap().addMouseListener(this); 
		mapKit.getMainMap().addMouseMotionListener(this); 
		mapKit.getMainMap().setOverlayPainter(this);
		mapKit.getMainMap().setToolTipText(Tooltipps.TOOLTIPP_MAP);
		
		mapPanel.add(mapKit);
	      
		nf.setMinimumFractionDigits(2);
		nf.setMaximumFractionDigits(4);
	}
	
	public void mousePressed(MouseEvent e) {
                // hier wird der Punkt geholt. Der Punkt bleibt immer gleich
                // egal wie oft ich die map drehe, das funktioniert korrekt
                // ist ja auch logisch, da sich dieser Punkt nicht auf die Map  bezieht
                // sondern auf die Position im JPanel
                // Dieser Punkt wird in eine GeoPosition umgewandelt (da es immer der
                // gleiche Punkt ist, wundert es mich, dass wenn ich die Karte um 360° 
                // nach links drehe eine um 360° verschobene GeoPosition bekomme

		startPos = mapKit.getMainMap().convertPointToGeoPosition(e.getPoint());
		
		if(e.getButton() != MouseEvent.BUTTON1) {
			rect = null;
			start = null;
		} else {
			start = new Rectangle(e.getPoint());
			((JXMapViewer) e.getSource()).setPanEnabled(false);
		}
	}

	public void mouseDragged(MouseEvent e) {
                // Das gleiche hier

		endPos = mapKit.getMainMap().convertPointToGeoPosition(e.getPoint());
		
		if(start != null) {
			end = new Rectangle(e.getPoint());
			rect = start.union(end);
		}

		((JXMapViewer) e.getSource()).repaint();
	}

	public void mouseReleased(MouseEvent e) {
                // Das gleiche hier

		endPos = mapKit.getMainMap().convertPointToGeoPosition(e.getPoint());
		
		if(start == null) {
			return;
		}

		end = new Rectangle(e.getPoint());
		rect = start.union(end);
		((JXMapViewer) e.getSource()).setPanEnabled(true);
		((JXMapViewer) e.getSource()).repaint();
	}

	public void paint(Graphics2D gd, JXMapViewer mapViewer, int i, int j) {
		Color borderColor = new Color(0, 0, 200);
		Color regionColor = new Color(0, 0, 200, 50);
		
		if(rect != null) {
			gd.setColor(regionColor);
			gd.fillRect(rect.x, rect.y, rect.width, rect.height);
			gd.setColor(borderColor);
			gd.drawRect(rect.x, rect.y, rect.width, rect.height);

			updateTextFields();
		}
	}
	
	private void updateTextFields() {
		TextFields.latitude1.setText(nf.format(startPos.getLatitude()));
		TextFields.longitude1.setText(nf.format(startPos.getLongitude()));
		TextFields.latitude2.setText(nf.format(endPos.getLatitude()));
		TextFields.longitude2.setText(nf.format(endPos.getLongitude()));
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
C UTM Koordinaten in LATITUDE und LONGITUDE umrechnen Allgemeine Java-Themen 13
H MouseEntered mit X und Y Koordinaten Allgemeine Java-Themen 7
MaxG. Kreis Koordinaten Allgemeine Java-Themen 7
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
T Geographische in UTM Koordinaten umwandeln Allgemeine Java-Themen 5
I Koordinaten von Fluglinie auf Openstreetmap verfolgen Allgemeine Java-Themen 1
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
K AWT Aus einer Datei die Koordinaten Angaben herauslesen und dreidimensional darstellen Allgemeine Java-Themen 2
Zettelkasten Vektor mit Koordinaten erstellen Allgemeine Java-Themen 2
K Mouse koordinaten im programm Allgemeine Java-Themen 4
L Koordinaten des Mouselistener nicht überall gleich Allgemeine Java-Themen 13
Eldorado Berechnung von Koordinaten, die zufällig aussehen Allgemeine Java-Themen 5
S Koordinaten aus einem Text filtern Allgemeine Java-Themen 11
M Radianwert wiederholt sich trotz unterschiedlicher zufälliger Koordinaten Allgemeine Java-Themen 6
S Bild anhand von Koordinaten einteilen Allgemeine Java-Themen 7
B API geographische Koordinaten Allgemeine Java-Themen 9
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
G Wort am Bildschirm -- Koordinaten suchen Allgemeine Java-Themen 2
G Richtung berechnen anhand Koordinaten Allgemeine Java-Themen 3
F Koordinaten eines gedrehten Rechtecks Allgemeine Java-Themen 4
C kürzester weg zwischen zwei Punkten, Koordinaten finden Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben