0

オーバーレイが 1 つある MapView があります。オーバーレイは、MapView 上にタイル ベースのマップをレンダリングします。MapView.getZoomLevel() を使用して、Google マップとタイルの現在のズーム レベルを取得します。すべてが完璧に機能しますが、ユーザーがマルチタッチ ジェスチャを使用してマップをズームしない場合のみです。私が理解しているように、MapView コントロールはズーム プロセス中に実際のタイルをレンダリングせず、引き伸ばされた画面コンテンツを表示するだけです。問題は、Google とまったく同じ方法でタイルをレンダリングするために使用できるこのスケール比を取得する方法です。

ありがとう!

4

1 に答える 1

1

メソッドMapView.getZoomLevel()はズーム変更アニメーションとマルチタッチに対応していませんが、メソッドMapView.getProjection().fromPixels()とメソッドは対応してMapView.getProjection().fromPixels()います。

したがって、問題に対処するためのいくつかのオプションがあります。上記の方法から、タイルをレンダリングする場所の直接(x,y)座標 (およびサイズ) を見つけるか、次のようなものを使用してズーム比を見つけることができます。

int lonSpan = projection.fromPixels(0,mapView.getHeight()/2).getLongitudeE6() - 
    projection.fromPixels(mapView.getWidth(),mapView.getHeight()/2).getLongitudeE6();

これにより、マップの垂直中心での経度スパンが得られます。次に、ズーム開始前の値からズーム開始後の値を除算します。

よろしく。

于 2012-11-20T12:02:31.747 に答える