【问题标题】:Set Map Bounds with different padding使用不同的填充设置地图边界
【发布时间】:2013-11-27 19:40:45
【问题描述】:

我想知道是否有任何方法可以为 Google 地图边界的设备的每个站点设置不同的填充。

因为我有一个与整个活动相匹配的 mpview,但我在屏幕底部 1/3 处有一个 MapOverlay(线性布局内的一些文本,具有非半透明背景)。

现在我想通过使用地图边界进行放大。但它应该从底部有更多的填充,所以它不会落后于我的 mapOverlay。

我使用此代码,填充为 120。

final com.google.android.gms.maps.model.LatLngBounds.Builder bounds = new LatLngBounds.Builder();
bounds.include(pref.getSavedLatLng());
bounds.include(currentLatLng);
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 120));

有没有办法设置不同的填充,或其他解决这个问题的方法?

感谢您的帮助,对不起我的英语。

【问题讨论】:

标签: android google-maps padding bounds


【解决方案1】:

这是一个较老的问题,也许提问者找到了解决方案,但这里适用于将来面临同样问题的任何人。使用

googleMap.setPadding(left, top, right, bottom)

设置单个填充,然后使用

googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 0))

完成后不要忘记将填充设置回 0(或之前的任何值)。因为与newLatLngBounds() 不同,setPadding() 设置的填充是永久的。

【讨论】:

  • 这对我不起作用,因为它还会在左下角的 Google 徽标上添加一个填充,以便它在地图上浮动。
  • 这可行,但谷歌图标会出现在屏幕中间!
  • @LakpriyaSenevirathna 只需使用以下 3 行。 googleMap.setPadding(left, top, right, bottom) googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 0)) googleMap.setPadding(0, 0, 0, 0) 你甚至不会注意到 google 图标在移动.
【解决方案2】:

这个问题很老,但有关更多信息,请查看here

如果应该将边界应用于特定操作,则设置地图填充可能不是一个好的解决方案,因为它是永久性的。

应用 100 及以上的填充以查看地图中的效果。贝娄是一个简单的例子。

final int MAP_BOUND_PADDING = 180;  /* In dp */  
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng latLng : listLatLng) { //listLatLngis a list of latLng to bound. You can put two if you want. 
    builder.include(latLng);
}
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, MAP_BOUND_PADDING);
mMap.animateCamera(cu);

【讨论】:

    【解决方案3】:

    这可以使用,但是这里我们有一个小动画问题!

    mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50), new GoogleMap.CancelableCallback() {
                    @Override
                    public void onFinish() {
                        mMap.animateCamera(CameraUpdateFactory.zoomBy(-1));
                    }
    
                    @Override
                    public void onCancel() {
    
                    }
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多