gpt4 book ai didi

android - 从点和填充创建 CameraUpdate 以很好地显示标记

转载 作者:行者123 更新时间:2023-12-04 16:09:02 25 4
gpt4 key购买 nike

我有一个 LatLng 点列表,我想在 GoogleMap 上显示为标记。我目前正在通过以下方式计算适合我所有观点的相机 View :

  1. 首先我用我的所有点计算一个 LatLngBounds。

    Iterator<LatLng> i = items.iterator();
    LatLngBounds.Builder builder = LatLngBounds.builder();
    while (i.hasNext()) {
    builder.include(i.next());
    }
    LatLngBounds bounds = builder.build();
  2. 那我用合适的方法:

    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding);

此更新提供了对我所有观点的良好 View ,并带有一些漂亮的填充。

问题

我想为 paddingTop、paddingBottom、paddingLeft 和 paddingRight 应用不同的值。也就是说,我两边什么都没有,然后我在顶部有一个 float 工具栏(大约50dp),在底部有一个 float 卡(大约200dp)。

如果我不添加填充,一些点将被顶部工具栏或底部卡片覆盖。

如果我添加最大填充(200dp),那么顶部、左侧和右侧都会出现巨大的间隙。有什么想法吗?

__________________________
| ___________o__________ |
| | | |
| |____________________|o|
| o |
| o |
| o |
| MAP |
| o |
| o |
| ______________________ |
| | | |
|o| | |
| | |o|
| |____________________| |
|____________________o___|

我现在唯一的想法是,以像素为单位获取 map 宽度,以 Lng 为单位获取 map 宽度(未明确定义),找到像素/lng 比率,将所需的填充从像素转换为 lng,然后重新计算 LatLngBounds 添加一个假离我原来的边界那么远的点(每边一个)。

最佳答案

实际上有一个更简单、更短的解决方案,只需要三行代码。谢谢 https://stackoverflow.com/a/27937256/10035225解决方案。

首先,将工具栏和底部卡片大小转换为像素。

然后,添加这三行代码:

map.setPadding(left, top, right, bottom);
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 0));
map.setPadding(0,0,0,0);

第一行:顶部和底部填充将是您的工具栏和底部卡片大小加上一些额外的,左右可以是任何填充,只要它看起来不错。

第二行:将相机移动/动画到边界,记得将填充设置为 0,因为你不需要任何额外的填充,因为你已经在第一行设置了它。

第三行:将 map 填充 设置回原始填充(我的情况为 0),因为第一行中设置的 map 填充是永久的。

就是这样,你去吧!希望对您有所帮助!

关于android - 从点和填充创建 CameraUpdate 以很好地显示标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com