0

マップビュープロジェクションを使用して、次のような画面ピクセルを取得しています

currentPixelLocation =  businessMapMv.getProjection().toPixels(tappedLocation, null);

次に、これを使用して、バルーンの先端を中央に配置するなど、画面上で操作を行います。

だから私がすることは

currentPixelLocation.y = currentPixelLocation.y - 100

これは正常に機能します。toPixelsメソッドデバイスによって返されるピクセル位置は独立していますか?

上記のコードのような私の操作は、すべての画面解像度で機能しますか?

4

2 に答える 2

1

あなたのサイトのデバイスに依存しないピクセルには誤解があると思います。デバイスに依存しないピクセル(dip)でレイアウトを宣言すると、フレームワーク自体が、実行時に実行されているデバイスの正しいVeiwサイズ(デバイスの表示密度に基づく)を計算します。フレームワークがビューの寸法を計算した後、ビューの寸法はピクセル単位で設定されます。

したがって、getProjection()。toPixels()は、下にあるMapViewに対する相対的な位置をピクセル単位で示します。これらのピクセルはデバイスに依存しません。

私にとって間違っていると思われるのはあなたの計算currentPixelLocation.y = currentPixelLocation.y - 100です100は何の略ですか?これらの100は、間違いなくデバイスに依存します。100ピクセルを減算する場合は、この計算を使用してcurrentPixelLocation.y = currentPixelLocation.y - 100 * getResources().getDisplayMetrics().density + 0.5fください。これにより、100ピクセルが*依存して*計算されたデバイスになります。

于 2012-06-27T09:48:35.430 に答える
0

これらはデバイスに依存しませんが、タイルレイヤーに定義されているタイルサイズによって異なります。通常のマップでは、デフォルトのタイルサイズは256x256ピクセルです。

于 2012-06-27T09:49:36.647 に答える