Android: 谷歌地图API - 更改地图工具栏的位置

3

我正在使用Google Maps API for Android。当我点击一个标记时,以下代码可以在右下角启用地图工具栏:

googleMap.getUiSettings().setMapToolbarEnabled(true); 

然而,我希望这个地图工具栏出现在地图的右上角,而不是默认的右下角位置。您该怎么做呢?

1
使用此处所述的地图填充:https://dev59.com/5mw05IYBdhLWcg3w9mZW#20339849 - Marian Paździoch
谢谢 - 这个方法有效!在有明确的方法单独更改地图工具栏位置之前,这样做就可以了 :) - Red Ghost
3个回答

22

我之前遇到过一个关于如何将工具栏移到页面底部的答案,希望这能帮到你。

//get reference to my location icon
    View locationButton = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")).
            getParent()).findViewById(Integer.parseInt("2"));

    // and next place it, for example, on bottom right (as Google Maps app)
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
    // position on right bottom
    rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
    rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
    rlp.setMargins(0, 0, 30, 30);

编辑: 根据 @Andro 的建议,这是更改地图工具栏位置的代码:

//获取到我的位置图标的引用

 View toolbar = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")).
            getParent()).findViewById(Integer.parseInt("4"));

    // and next place it, for example, on bottom right (as Google Maps app)
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
    // position on right bottom
    rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
    rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
    rlp.setMargins(0, 0, 30, 30);

1
地图工具栏中的代码:View locationButton = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")). getParent()).findViewById(Integer.parseInt("4")); - Andro
谢谢,但你应该像@Andro建议的那样编辑你的答案。 - Antwan
why parseInt("4") ? - MetaSnarf
1
mapView 中的不同视图具有不同的 ID。也就是说,Google 文本、地图工具栏、位置按钮等具有不同的 ID。工具栏的 ID 是 4,位置图标的 ID 是 2。 :) - Andro
1
非常好,谢谢!后续版本的API开始要求findViewById提供更多信息。解决方法:https://dev59.com/zlcO5IYBdhLWcg3ww0Vt - Liker777
显示剩余3条评论

5

虽然我想发表评论,但是我的声望很低,所以:

据我所知,目前还没有定位它的方法。它只会出现在默认位置。

如Nathan所说,如果可能的话,我应该添加一些替代方案。所以,有一个变通方法:您可以禁用地图的工具栏,并在布局中的任何位置添加appcompact的ToolBar。

参考: https://developer.android.com/reference/android/support/v7/widget/Toolbar.html


2
如果可能的话,我建议将其更改为类似于“你不能这样做,但是你可以尝试这样做”的说法。 - Nathan Tuggy
当然,但他肯定可以对此做些什么。 - user2550149
我的意思是,关于更改Google地图现有工具栏UI的位置,没有什么可做的。希望现在讲得清楚了。 :) - user2550149
在查找一份参考资料来解释我所推荐的内容时,我偶然发现了这个 Meta 问题,它似乎提供了更为有用的指导。 - Nathan Tuggy
@NathanTuggy,感谢您提供的链接 :) - user2550149
显示剩余3条评论

0

2021年更新

你可以通过设置googleMap对象的padding来移动地图界面控件(指南针、我的位置、缩放等)。这是我发现的仅有的提供内部方式。以下是官方文档中的相关信息:

当设计与地图某些部分重叠的用户界面时,Padding可以很有帮助。例如,在下面的图片中,地图沿着顶部和右侧边缘进行了填充。可见的地图控件和法律文本将显示在填充区域的边缘。

enter image description here

https://developers.google.com/maps/documentation/android-sdk/map#map_padding


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接