2012-08-23 36 views
5

所以我給了用戶控件使用一個seekbar來改變一個圓形覆蓋對象在MapView中的半徑。Android動態更改圓的大小隻有圓的一半更新正確

然而,當你拖動搜索條改變圓的半徑,只有它的底部順利更新:

WRONG

上半部分是什麼圓的半徑爲 ,底部是當前圓的半徑的位置。底部部分更新順利(以及搜索欄上的進度),但頂部保持靜止半秒左右。

以前曾見過這樣的事情嗎?下面是從RadiusOverlay對象的onDraw方法我用:

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

感謝隨便看看。

回答

3

所以我加入這其中提請圈覆蓋的方法:

mController.animateTo(mLocationOverlay.getMyLocation()); 

其中mController是LocationController和mLocationOverlay是LocationOverlay(我想這是一個有點明顯)。

不管怎麼說,添加該線條使得該圓形平滑動畫。這可能與如何在地圖上疊加工作有關,如果它們不居中,它們會被剪輯或者其他東西。誰知道。但是我通過去除那條線再次測試了它,並且確定它再次被修剪。所以我想這就是解決方案。 聳聳肩

如果有人有一個真正的解釋隨意提供它。