私はMapViewをポイントPの中央に配置しました。ユーザーはMapViewの中心を変更することはできませんが、ポイントPの周りに表示する円の半径を選択し、新しいサークルを示すために、各変更時に地図が再描画されます。 問題は、表示可能な領域にサークル全体を表示するために、地図を必要に応じて拡大または縮小したいと思うことです。私はこの試みた:Google MapViewのズームアウトが円になる
Projection proj = m_Map.getProjection();
Point mapCenterPixles = new Point();
proj.toMapPixels(center, mapCenterPixles);
float radiusPixels = proj.metersToEquatorPixels(newRadius);
IGeoPoint topLeft = proj.fromPixels(mapCenterPixles.x - radiusPixels,
mapCenterPixles.y - radiusPixels);
IGeoPoint bottomRight = proj.fromPixels(mapCenterPixles.x
+ radiusPixels, mapCenterPixles.y + radiusPixels);
m_Map.getController().zoomToSpan(
topLeft.getLatitudeE6() - bottomRight.getLatitudeE6(),
topLeft.getLongitudeE6() - bottomRight.getLongitudeE6());
をしかし、値が()、私は一種のここで迷ってしまいました、何のchnageを起こさない、誰かがどのようにいくつかの光を当てるしてくださいすることができzoomToSpanに渡されたとして、私は、何かが欠けているようです半径をメートルで指定した円の境界ボックスとその中心点にまたがるようにマップをズームするには?
のドキュメントに記述されているが、マイケルをありがとう。あいまいな行動とは別に、私の計算は正しいのでしょうか?私はスパンの意味を完全に理解していませんでしたが、私が見つけた例はほとんどありませんでした。たぶん私は誤算しているので、すでに画面にスパンが表示されていますか? –
'bottomRight'の経度がおそらく' topLeft'の経度よりも大きいことを除いて、ほとんど正しいと思いますので、代わりに 'bottomRight.getLongitudeE6() - topLeft.getLongitudeE6()'を使用してください。そして、あなたのコードは[180番目の子午線](http://en.wikipedia.org/wiki/180th_meridian)の近くで分解されるかもしれないことに注意してください。 –