Android 2.2電話でItemizedOverlayを使用してMapViewにピンを配置する場合、配置は正しいですが、4.0および4.1電話で配置する場合、配置が間違っています。ピンはマップのさらに下に配置されますが、x座標は同じです。
4.XXデバイスのMapViewの左上隅のピクセル値は、2.2デバイスの場合とは異なり、(0.0)ではないことがわかりました。違いはアクションバーの高さ(画像で強調表示されているものなど)であることがわかり、その高さを取得するためのコードが見つかりました。ここで、ピンを配置するときに、MapViewのy座標からアクションバーの高さを差し引きます。4.XXデバイスで正しい結果が得られましたが、2.2デバイスでは配置が間違っています。
画面の上部に追加機能がありますが、その高さはすべてのデバイスでほぼ同じです。
すべてのデバイスのMapViewで正しい座標を取得するために私が何をすべきか知っていますか?
私が使用したコードは次のとおりです。
final WindowManager w = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
final Display d = w.getDefaultDisplay();
final DisplayMetrics m = new DisplayMetrics();
d.getMetrics(m);
int totalHeight =mapView.getLayoutParams().height;
int statusbarHeight = totalHeight - mapView.getMeasuredHeight();