MapView Scroll-Verhalten Fading-Problem

P

pivi

Neues Mitglied
0
Hallo Liebe Community,

ich entwickle z.Z. eine Android-Applikation, die auf Google's Maps aufbaut und bin auch schon recht weit vorangeschritten. Nur habe ich ein Problem, bei dem ich irgendwie keine Lösung finde. Es geht um folgenden Sachverhalt:

Ich zeichne auf der Map relative viele Routen(Paths) (ca. 1/3 der Map besteht nur aus Paths im maximal zulässigstem Zoomlevel). Da dies nun ganz schön auf die Performance drückt, fange ich das "dispatchTouchEvent" in der MapActivity ab und lösche alle Routen, sobald die Map bewegt wird und zeichne wieder alle Routen, sobald ein "ActionUp" folgt. Das Problem ist nun, dass in der Map eine Art fading/weiterlauf aktiviert ist, der bei schnellem verschieben und loslassen der Map, diese noch etwas weiterschiebt und meine Routen werden aber sofort beim loslassen neu gezeichnet und sind somit nicht an der richtigen Position.
Ist es nun möglich abzufangen, wann dieses fading zuende ist oder dieses evtl sogar auszuschalten?

Vielen Dank.

MfG
Pivi
 
Hi,

ich habe seit gestern auch genau dein Problem. Ich zeichne auch viele Linien für eine Route und die Performance ist schlecht. Ich benutzte nur den onTouchListener. Hast du vielleicht die Lösung schon gefunden? Ich hatte mir kurz gedacht, dass ich nach dem scrollen die sichtbaren Linien zeichne, dannn in ner while schleife 2 sek. warte und dann nochmal zeichne, falls getMapCenter ein neues "Zentrum" liefert.. aber das ist erstens ne dreckige lösung, 2. kann es vlt auch länger als 2 sekunden andauern und 3. hat die app bei mir dann den ersten aufruf des neuen zeichnens gar nicht durchgeführt und ich habe direkt die 2 sekunden warten müssen..
Falls ich was neues weiß, poste ich es hier rein.. Falls du die Lösung schon hast würde ich mich sehr freuen, wenn du sie hier rein postest :)

Gruß,
stevenking
 
Hey stevenking,

leider habe ich immer noch keine optimale Lösung für das Problem gefunden (und es scheint wohl einfach nicht möglich zu sein das Ende des Fadings abzufangen, warum auch immer). Aber ich habe eine andere Möglichkeit gefunden, die zwar auch nicht optimal ist, aber wenigstens funktioniert. Und zwar habe ich einen Listener auf die ZoomButtonController gelegt und sobald diese ihre Sichtbarkeit ändern, zeichne ich alle ruten einmal neu. Somit werden sie zwar erst eins zwei Sekunden nach dem Ende des Fadings gezeichnet aber es funktioniert und bringt zumindest einiges an Performance.

Code:
mapView.getZoomButtonsController().setOnZoomListener(
    new ZoomButtonsController.OnZoomListener() {                  
            @Override
            public void onZoom(boolean zoomIn) {}
            
            @Override
            public void onVisibilityChanged(boolean visible) {
                // --> redraw
            }
});
MfG
Pivi

P.S.: Falls doch jemand eine Möglichkeit kennt, wie dieses Problem besser zu lösen wäre, würde ich mich freuen, wenn es hier gepostet werden würde.
 

Ähnliche Themen

W
  • WuDiDong
Antworten
3
Aufrufe
765
jogimuc
J
S
Antworten
4
Aufrufe
990
Sempervivum
S
Zurück
Oben Unten