5

所以我给用户控件使用搜索栏来改变 MapView 中圆形覆盖对象的半径。

但是,当您拖动搜索栏以更改圆的半径时,只有它的底部会平滑更新:

错误的

上半部分是圆的半径,下半部分是当前圆的半径。底部平滑更新(以及搜索栏上的进度),但顶部保持静止半秒左右。

以前见过这样的事情吗?这是我正在使用的 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);
}

谢谢你看。

4

1 回答 1

3

所以我将此添加到绘制圆形叠加层的方法中:

mController.animateTo(mLocationOverlay.getMyLocation());

哪里mController是 LocationController 并且mLocationOverlay是 LocationOverlay (我想这有点明显)。

无论如何,添加那条线使圆圈动画流畅。这可能与叠加层在地图上的工作方式有关,如果它们没有居中,它们会被裁剪或其他东西。谁知道。但是我通过删除那条线再次对其进行了测试,果然它再次被剪掉了。所以我想这就是解决方案。耸耸肩

如果有人有真正的解释,请随时提供。

于 2012-08-23T19:20:13.233 回答