0

私のMapViewには、addView()によってLayoutParamsを使用して追加された子ビューが含まれています。

new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, geoPoint, 0, 0, MapView.LayoutParams.BOTTOM | MapView.LayoutParams.LEFT)

私は自分の視点のスクリーンポイントを得ることができます:

Point p1 = mapView.getProjection().toPixels(geoPoint, null);

geoPointが変更されたら、mapViewのすべての子を削除してから、新しいLayoutParams(新しいgeoPointに基づく)を使用してビューを追加し、画面ポイントで新しいものを取得します。

Point p2 = mapView.getProjection().toPixels(newGeoPoint, null);

次に、ビューをp1からp2に変換する必要があります。次のことを試してください。

Animation animation = new TranslateAnimation(
                Animation.ABSOLUTE, p1.x, 
                Animation.ABSOLUTE, p2.x, 
                Animation.ABSOLUTE, p1.y, 
                Animation.ABSOLUTE, p2.y);
animation.setDuration(1500);
myView.startAnimation(animation);

アニメーションは再生されますが、間違ったポイントから間違ったポイントへ。

アニメーションをp1からp2に正しく変換するにはどうすればよいですか。

4

1 に答える 1

1

これを試して:

Animation animation = new TranslateAnimation(0, p1.x - p2.x, 0, p1.y - p2.y);
animation.setDuration(1500);
myView.startAnimation(animation);

最後に、ポイントの新しい位置を設定することを忘れないでください。そうしないと、アニメーションが終了したときに元の位置に戻ります。

于 2012-11-21T12:36:26.217 に答える