Formen in Android MapView unabhängig von der Zoomstufe zeichnen

8

Ich muss Formen zeichnen, die genau denen entsprechen, die Sie mit benutzerdefinierten Karten in Google Maps mithilfe von Androids MapView erstellen würden.

Mit anderen Worten: Wenn ich eine Form auf der Karte zeichne, sollte sie beim Verkleinern verkleinert werden und denselben Bereich der Karte abdecken, unabhängig von der Zoomstufe.

Beispiel nach der Android-Referenz:

%Vor%

Dies zeigt einen weißen Kreis auf der Karte, aber wenn Sie herauszoomen, hat der Kreis die gleiche Größe. Vielleicht ist die Verwendung von Leinwand nicht der richtige Ansatz?

  

Ich brauche etwas, wie Google Maps Nachbarschaften oder Städte hervorhebt:

     

Irgendwelche Ideen? Vielen Dank im Voraus!

    
MusikAnimal 29.05.2012, 02:10
quelle

4 Antworten

8

Ich hatte das gleiche Problem selbst, hier ist eine vollständige Lösung mit Demo-Standorten:

%Vor%     
TWiStErRob 25.07.2012 23:41
quelle
5

Der Radius für drawCircle ist in Pixel, daher ist es sinnvoll, dass der Kreis immer die gleiche Größe hat. Sie müssen den Radius basierend auf der Zoomstufe skalieren. Im folgenden Beispiel wird eine Geometrie aus der JTS Topology Suite grafisch dargestellt, die skaliert wird.

%Vor%

Angepasst von hier: MapSelectionOverlay .java

    
Frohnzie 30.07.2012 13:17
quelle
2

Was Sie brauchen, ist eine Liste von Breiten- / Längenpunkten für jede Form, die Sie auf der Karte zeichnen möchten. In der onDraw-Methode müssen Sie über diese Liste (für jede zu zeichnende Form) iterieren und dies tun:

%Vor%

Zeichnen Sie dann die Form auf der Leinwand. IIRC, die unabhängig vom Zoom korrekt funktioniert, da die mapView die Zoomstufe kennt und Ihnen die geeignete Pixelposition für das lat / long-Paar bei dieser Zoomstufe zur Verfügung stellt.

    
Travis 24.07.2012 12:43
quelle