1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

MapView Scroll-Verhalten Fading-Problem

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pivi, 31.01.2010.

  1. pivi, 31.01.2010 #1
    pivi

    pivi Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    31.01.2010
    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
     
  2. stevenking, 15.02.2010 #2
    stevenking

    stevenking Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    15.02.2010
    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
     
  3. pivi, 19.02.2010 #3
    pivi

    pivi Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    31.01.2010
    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.
     

Diese Seite empfehlen