2012-08-23 5 views
5

したがって、ユーザーコントロールでシークバーを使用してMapViewのサークルオーバーレイオブジェクトの半径を変更することができます。Androidサークルのサイズを動的に変更すると円の半分だけが正しく更新されます

あなたは円の半径を変更するにはシークバーをドラッグするとしかし、それの底部のみがスムーズに更新します。

WRONG

上半分が円の半径はだったものです、下側は現在の円の半径です。下の部分はスムーズに更新されます(シークバーの進捗とともに)が、トップは0.5秒ほど静的なままです。

これまでにこのようなことがありましたか?外観を持つため

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

ありがとう:ここで私が使用しているRadiusOverlayオブジェクトからonDrawメソッドがあります。

答えて

3

だから円オーバーレイ描画方法にこれを追加:

mController.animateTo(mLocationOverlay.getMyLocation()); 

mControllerがLocationControllerあり、mLocationOverlayはLocationOverlay(私は少し明らかだった推測)です。

とにかくその行を追加すると円がスムーズにアニメーション化されました。おそらく、オーバーレイがマップ上でどのように動作するかと関係があります。知るか。しかし、私は再びその行を削除することによってそれをテストし、十分にそれが再びクリッピングされました。だから私はそれが解決策だと思う。 shrugs

本当の説明があれば誰でも自由に提供してください。

関連する問題