2012-08-23 18 views
5

Así que le he dado a los controles de usuario para usar una barra de búsqueda para cambiar el radio de un objeto superpuesto circular en un MapView.Android Cambiando dinámicamente el tamaño del círculo, solo la mitad del círculo se actualiza correctamente

Sin embargo, cuando se arrastra el seekbar para cambiar el radio del círculo, solamente la porción de fondo del mismo actualiza sin problemas:

WRONG

La mitad superior es lo que el radio del círculo era , y el fondo es donde actualmente se encuentra el radio del círculo. La parte inferior se actualiza suavemente (junto con el progreso en la barra de búsqueda), pero la parte superior permanece estática durante medio segundo más o menos.

¿Has visto algo como esto antes? Aquí está el método onDraw del objeto RadiusOverlay que estoy 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); 
} 

Gracias por tener una mirada.

Respuesta

3

por lo que añade esto al método que se basa la superposición círculo:

mController.animateTo(mLocationOverlay.getMyLocation()); 

donde mController es una LocationController y mLocationOverlay es una LocationOverlay (supongo que era un poco obvio).

De todos modos, agregar esa línea hizo que el círculo se animara sin problemas. Probablemente sea algo relacionado con cómo funcionan las superposiciones en el mapa; si no están centradas, se cortarán o algo así. Quién sabe. Pero lo probé de nuevo al eliminar esa línea y, de hecho, recortó nuevamente. Así que supongo que esa es la solución. encoge de hombros

Si alguien tiene una explicación real no dude en proporcionarla.

Cuestiones relacionadas