5

そのため、シークバーを使用して MapView 内の円オーバーレイ オブジェクトの半径を変更するユーザー コントロールを提供しました。

ただし、シークバーをドラッグして円の半径を変更すると、円の下部のみがスムーズに更新されます。

違う

上半分は円の半径で、下半分は現在の円の半径です。下部は (シークバーの進行状況に合わせて) スムーズに更新されますが、上部は 0.5 秒ほど静止したままです。

このようなものを見たことがありますか?私が使用している 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());

wheremControllerは LocationController でmLocationOverlayあり、 LocationOverlay です (これは少し明白だったと思います)。

とにかく、その行を追加すると、円がスムーズにアニメーション化されました。おそらく、オーバーレイがマップ上でどのように機能するかに関係しており、中央に配置されていない場合、クリップまたは何かが発生します。知るか。しかし、その行を削除して再度テストしたところ、再びクリップされました。それで解決だと思います。肩をすくめる

誰かが本当の説明を持っているなら、遠慮なくそれを提供してください。

于 2012-08-23T19:20:13.233 に答える