4

ヒント: HTML を使用した同様の投稿があります。

私のアプリの現在のタブレット実装では、次のように、左パネルの RelativeLayout にいくつかの情報が表示されたフルスクリーンの MapView があります。

(私のレイアウトは非常に些細なものであり、読みやすくするために投稿する必要はないと思います)

ここに画像の説明を入力

問題は、マップを特定のポイントに集中させたい場合に発生します...このコードを使用すると:

mapController.setCenter(point);

もちろん、空の領域の中心ではなく、画面の中心にポイントを取得します。

左パネルのオフセットをマップ座標に変換し始める場所がまったくわかりません...

助けや提案をありがとう

4

1 に答える 1

3

top-leftコーナーからマップ座標を取得bottom-rightし、それを画面サイズで割り、ピクセルあたりの値を取得することで、目的を達成できます。

次に、オフセットを掛けて元の中心に追加するだけです。

コード例:

private void centerMap(GeoPoint center, int offX, int offY){
    GeoPoint tl = mapView.getProjection().fromPixels(0, 0);
    GeoPoint br = mapView.getProjection().fromPixels(mapView.getWidth(), mapView.getHeight());

    int newLon = offX * (br.getLongitudeE6() - tl.getLongitudeE6()) / mapView.getWidth() + center.getLongitudeE6(); 
    int newLat = offY * (br.getLatitudeE6() - tl.getLatitudeE6()) / mapView.getHeight() + center.getLatitudeE6();

    mapController.setCenter(new GeoPoint(newLat, newLon));

}

使用するには、元の中心と両方のオフセット (x と Y) を適用して上記のメソッドを呼び出します。

Note:書かれているように、上記のコードはマップを正のオフセット値の場合は左に移動し、負のオフセット値の場合は右に移動します。質問の画面から、負のオフセットを使用してマップを左に移動し、Y のオフセットをゼロにする必要があります。

よろしく

于 2012-11-11T21:02:01.043 に答える