マップ内のコンパスの位置を変更できるかどうかは知りませんか?AndroidのGoogle Maps APIを移動する方法コンパスの位置
私が見つけることができるのはhow to enable or disableです。しかし、私はオーバーレイがそれを妨げていないように少し下に移動する必要があります。
マップ内のコンパスの位置を変更できるかどうかは知りませんか?AndroidのGoogle Maps APIを移動する方法コンパスの位置
私が見つけることができるのはhow to enable or disableです。しかし、私はオーバーレイがそれを妨げていないように少し下に移動する必要があります。
利用GoogleMap.setPadding()メソッド:
https://developers.google.com/maps/documentation/android/map#map_padding
私はあなたがコンパスの位置を変更することはできませんが、あなたはそれを無効にして、あなたにプライベート1を構築することができます知っているよう。
+1興味深い。誰かが回避策を思い付くかどうかを見てみましょう。 – capdragon
これはMapViewを使用しています。 MapFragmentのアイディアですか? –
私は質問を頼まれたことを長い時間がかかったけど、私は数日前に、この問題にフェルドI
try {
assert mapFragment.getView() != null;
final ViewGroup parent = (ViewGroup) mapFragment.getView().findViewWithTag("GoogleMapMyLocationButton").getParent();
parent.post(new Runnable() {
@Override
public void run() {
try {
for (int i = 0, n = parent.getChildCount(); i < n; i++) {
View view = parent.getChildAt(i);
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) view.getLayoutParams();
// position on right bottom
rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP,0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
rlp.rightMargin = rlp.leftMargin;
rlp.bottomMargin = 25;
view.requestLayout();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
この例では、右隅にコンパスを入れました。これを行う際にmapFragmentが作成されていることを確認する必要があります。MapFragmentのメソッド "onMapReady"でコードを実行することをお勧めします。
これは何らかの理由でボトム左に配置されています! – Paschalis
@Override
public void onMapReady(GoogleMap map) {
try {
final ViewGroup parent = (ViewGroup) mMapView.findViewWithTag("GoogleMapMyLocationButton").getParent();
parent.post(new Runnable() {
@Override
public void run() {
try {
Resources r = getResources();
//convert our dp margin into pixels
int marginPixels = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, r.getDisplayMetrics());
// Get the map compass view
View mapCompass = parent.getChildAt(4);
// create layoutParams, giving it our wanted width and height(important, by default the width is "match parent")
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(mapCompass.getHeight(),mapCompass.getHeight());
// position on top right
rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
//give compass margin
rlp.setMargins(marginPixels, marginPixels, marginPixels, marginPixels);
mapCompass.setLayoutParams(rlp);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
オン2.0マップapi。
// change compass position
if (mapView != null &&
mapView.findViewById(Integer.parseInt("1")) != null) {
// Get the view
View locationCompass = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("5"));
// and next place it, on bottom right (as Google Maps app)
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
locationCompass.getLayoutParams();
// position on right bottom
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
layoutParams.setMargins(0, 160,30, 0); // 160 la truc y , 30 la truc x
}
OMG !!!ありがとうございました!!! – capdragon
魅力的な作品です! – sud007
カメラの位置に影響を与えるので、良い解決策ではありません –