2012-08-23 7 views
5

Così ho dato l'utente controlla di utilizzare una SeekBar per modificare la distanza di un oggetto cerchio sovrapposizione in un MapView.dinamicamente Android cambiando dimensioni cerchio solo la metà dei aggiornamenti cerchio correttamente

Tuttavia, quando si trascina il SeekBar per cambiare il raggio del cerchio, solo la parte inferiore di esso aggiorna senza problemi:

WRONG

La metà superiore è ciò che il raggio del cerchio era e il fondo è dove si trova attualmente il raggio del cerchio. La parte inferiore aggiorna uniformemente (insieme con i progressi SeekBar), ma all'inizio rimane statico per mezzo secondo circa.

mai visto qualcosa di simile prima? Ecco il metodo OnDraw dall'oggetto RadiusOverlay sto usando:

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); 
} 

Grazie per avere uno sguardo.

risposta

3

Così ho aggiunto questo al metodo che disegna il cerchio di sovrapposizione:

mController.animateTo(mLocationOverlay.getMyLocation()); 

dove mController è un LocationController e mLocationOverlay è una LocationOverlay (immagino che era un po 'ovvio).

In ogni modo, aggiungendo che la linea ha fatto il cerchio animare senza intoppi. E 'probabilmente qualcosa a che fare con il modo in sovrapposizioni di lavoro sulla mappa, se non vengono centrati si ritagliare o qualcosa del genere. Chissà. Ma l'ho provato di nuovo rimuovendo quella linea e abbastanza sicuro da farla di nuovo ritagliare. Quindi penso che sia la soluzione. shrugs

Se qualcuno ha una vera spiegazione, sentitevi liberi di fornirlo.