概要
現在のマップビューから緯度/経度のスパンに移動できる必要があります。この動きをアニメーション化された方法で実行したいと思います(animateTo
動作方法と同様)。現在のビューから移動し、ズームインまたはズームアウトして、ターゲットの緯度/経度のスパンに到達する必要があります。以下は、zoomLevelsを使用するときにこれを行うために使用しているコードです。ただし、これを実現するには、ズームレベルではなく、スパンを使用する必要があります。
[編集]
これが私がしていることですanimateTo
。これと同等のものが必要ですが、Lat / Lng Spanを使用して最終ビューに到達します(ズームして中央に配置し、提供されたlat / lngスパンを表示する必要があります)。お気づきのように、私はズームをどの程度使用するかを決定しています...代わりにlat/lngスパンを使用する必要がありますtargetZoomLevel
。currentZoomLevel
public static void smoothZoom(final MapController controller,
final int currentZoomLevel, final int targetZoomLevel,
int latitude, int longitude) {
final Handler handler = new Handler();
controller.animateTo(new GeoPoint(latitude, longitude), new Runnable() {
public void run() {
int currentZoom = currentZoomLevel;
int zoomTarget = targetZoomLevel;
// Smooth zoom handler
// int zoomLevel = _mapView.getZoomLevel();
// int targetZoomLevel = targetLevel;
long delay = 0;
if (zoomTarget > currentZoom) {
while (currentZoom++ < zoomTarget) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
controller.zoomIn();
}
}, delay);
delay += 150; // Change this to whatever is good on the
// device
}
}
}
});
}
[編集]
私は今、私のアプリケーションにこのコードが本当に必要です。それを回避する方法はありません。私がコードを機能させるのを手伝ってくれた最初の人は250人の担当者を取得します。