我有一个带有mapview的活动。 我有一些代码可以动画相机以包含mapview中的所有标记。 前两次我在启动它的活动后调用我的动画相机代码,它不起作用。 从第三次开始,它正常工作。 对此有何解释?
以下是我的相关代码:
if (filteredList.size() > 0)
{
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markers)
{
builder.include(marker.getPosition());
}
LatLngBounds bounds = builder.build();
int padding = 50; // offset from edges of the
// map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
map.animateCamera(cu);
}
在加载活动并从Web服务获取数据后,此代码将被调用一次(并且不起作用)。 当用户按下按钮时它会被第二次调用(但仍然不起作用)。 它会再次响应来自用户的按钮按下,并从此开始正常工作。
感谢您的帮助。
答案 0 :(得分:0)
按下第一个按钮,将地图的可见性设置为“可见”,因此事实证明它实际上尚未初始化。 感谢Marcin Orlowski。 我通过添加以下内容修复了它: mapView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom)
{
if (firstMapLayout)
{
firstMapLayout = false;
rebuildMap();
}
}
});
其中“rebuildMap()”是包含相机动画代码的函数。
谢谢你们。
答案 1 :(得分:0)
我成功地使用onMapLoadedCallback
这样:
mapView.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
mapLoaded = true;
// show location on map or execute any code that you need
// after the map loading
}
});