2012-08-23 7 views
5

Tak więc ustawiłem kontrolki użytkownika tak, aby używały paska wyszukiwania, aby zmienić promień obiektu nakładki okręgu w MapView.Android Dynamicznie zmieniający się rozmiar koła, tylko połowa kręgu aktualizuje się prawidłowo

Jednak podczas przeciągania SeekBar zmienić promień okręgu, tylko dolna część aktualizuje gładko:

WRONG

Górna połowa jest co promień okręgu był , a dno jest tam, gdzie obecnie znajduje się promień okręgu. Dolna część aktualizuje się płynnie (wraz z postępem na pasku wyszukiwania), ale góra pozostaje statyczna przez pół sekundy.

Czy kiedykolwiek widziałeś coś takiego? Oto metoda OnDraw od obiektu RadiusOverlay Używam:

public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
    super.draw(canvas, mapView, shadow); 

    Point point = new Point(); 

    Projection projection = mapView.getProjection(); 
    projection.toPixels(mGeoPoint, point); 
    float projectedRadius = projection.metersToEquatorPixels((float)(mRadius * 1609.3d)); 

    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setARGB(50, 41, 166, 247); 
    paint.setAntiAlias(true); 

    canvas.drawCircle((float)point.x, (float)point.y, projectedRadius, paint); 
} 

Dzięki za posiadające wygląd.

Odpowiedz

3

Więc dodałem to do metody, która rysuje okrąg nakładki:

mController.animateTo(mLocationOverlay.getMyLocation()); 

gdzie mController jest LocationController i mLocationOverlay jest LocationOverlay (myślę, że był nieco oczywiste).

Dodanie tej linii sprawiło, że okrąg płynnie ożywił się. Prawdopodobnie ma to związek z tym, jak nakładki działają na mapie, jeśli nie są wyśrodkowane, zostaną przycięte lub coś podobnego. Kto wie. Ale przetestowałem go ponownie, usuwając tę ​​linię i na pewno wystarczy, że znowu się spiął. Więc myślę, że to jest rozwiązanie. wzrusza ramionami

Jeśli ktoś ma prawdziwe wyjaśnienie, nie krępuj się.

Powiązane problemy