使用不同的填充设置地图边界

时间:2013-11-27 19:40:45

标签: android google-maps padding bounds

我想知道是否可以通过设备的每个站点为Google地图边界设置不同的填充。

因为我有一个与整个活动相匹配的mpview,但是我在屏幕底部1/3处有一个MapOverlay(一些带有非翻译背景的Linerar布局内的Text)。

现在我想通过使用地图边界放大。但它应该从底部有更多的填充,所以它并没有落后于我的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));

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

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

3 个答案:

答案 0 :(得分:31)

这是一个较老的问题,也许提问者找到了解决方案,但这里是针对将来遇到同样问题的人。使用
googleMap.setPadding(left, top, right, bottom)

设置单个衬垫,然后使用

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

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

答案 1 :(得分:1)

问题很严重,但要查看更多信息,请查看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);

答案 2 :(得分:0)

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

clock_t begin = clock();
...............
clock_t end = clock();
double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;