Fläche auf Karte zeichnen

  • Antworten:6
Maximilian O
  • Forum-Beiträge: 990

02.04.2012, 12:51:32 via Website

Hallo Leute,
gibt es eine Möglichkeit in meiner Mapview bestimmte Bereiche zu markieren? Sprich ich habe 4 Geokoordinaten als Eckpunkte. Nun möchte ich ein Viereck zeichnen, welches über der MapView liegt, welches die Punkte als Koordinaten hat. Diese Fläche soll sich auch mitbewegen beim zoomen.

Habt ihr eine Idee wie man das bewerkstelligen könnte?

Liebe Grüße Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Wolfgang S.
  • Forum-Beiträge: 32

02.04.2012, 16:23:41 via Website

Standardmäßig gibt es ja nur die Möglichkeit, Punkte zu markieren. Für Flächen musst du wohl selbst Hand anlegen.

1. Eine eigene Implementierung von Overlay erstellen
1public class RectangleOverlay extends Overlay {
2 ...
3public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow) {
4 //Code zum Zeichnen des Rechtecks abhängig von der aktuellen mapView (und zoomstufe)
5}
6...
7}

2. Overlay zur MapView hinzufügen
1RectangleOverlay overlay = new RectangleOverlay();
2mapView.getOverlays().add(overlay);

Eventuell findest du im Internet dafür schon fertige Bibliotheken, ich kenne aber noch keine.

Antworten
Maximilian O
  • Forum-Beiträge: 990

02.04.2012, 16:29:40 via Website

Hey Wolfgang,
danke für die Info. Schade, dass es da nichts standardmäßiges gibt. Dann werde ich das wohl selber bauen müssen :)

Liebe Grüße Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

02.04.2012, 17:01:39 via Website

ich bin mir sicher, dass du nicht der erste bist, der sowas machen will.

google wird dir sicher ein paar fertige klassen liefern, die dir dabei helfen. kann ich mir nicht vorstellen, dass das noch niemand irgendwo gepostet hat

swordiApps Blog - Website

Antworten
Maximilian O
  • Forum-Beiträge: 990

02.04.2012, 18:09:08 via Website

Danke nochmal euch beiden. Habe gerade Dank euch die Lösung gefunden. :)

Liebe Grüße Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

02.04.2012, 18:11:25 via App

Maximilian O
Danke nochmal euch beiden. Habe gerade Dank euch die Lösung gefunden. :)
Na komm, dann teile dich bitte auch die Lösung mit uns...

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Maximilian O
  • Forum-Beiträge: 990

02.04.2012, 18:19:14 via Website

Carsten Müller
Na komm, dann teile dich bitte auch die Lösung mit uns...

Herzliche Grüße
Carsten
Hey Carsten,
das wollte ich natürlich noch machen, muss sie ja aber erstmal selber bauen :)

Also im Prinzip ist es so wie Wolfgang sagt, man extendet in einer Klasse Overlay.
Nun kann man in der onDraw() mittels
1Point screenPoint = new Point();
2 mapView.getProjection().toPixels(geoPoint1, screenPoint);
herausfinden ob eine Geokoordinate auf dem Screen liegt und eben durch eine Linie verbinden. (mit screenPoint.x oder screenPoint.y bekommt man die Pixel). Da ich nun ein Viereck wollte, kann ich entweder 4 Punkte mittels Linien verbinden, oder eine Bitmap anlegen. Als Breite hat sie den Abstand der GeoPunkte in Pixeln und x/y Koordinate des Punktes der am weitesten oben links liegt.
Diese geom. Formen werden praktischerweise direkt resized beim zoomen, da sie ja fest an den GeoPunkten hängen.

Den Code poste ich sobald ich ihn habe :)

Liebe Grüße und Danke noch einmal Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten