Android com.google.Android.gms.maps.MapView animateCamera第一次不工作
我有一个带有地图视图的活动。 我有一些代码来设置摄影机的动画,以在mapview中包含所有标记。 前两次我在开始活动后调用动画摄影机代码时,它不起作用。 从第三次开始,它工作正常。 对此有何解释 这是我的相关代码:Android com.google.Android.gms.maps.MapView animateCamera第一次不工作,android,google-maps,android-mapview,Android,Google Maps,Android Mapview,我有一个带有地图视图的活动。 我有一些代码来设置摄影机的动画,以在mapview中包含所有标记。 前两次我在开始活动后调用动画摄影机代码时,它不起作用。 从第三次开始,它工作正常。 对此有何解释 这是我的相关代码: if (filteredList.size() > 0) { LatLngBounds.Builder builder = new LatLngBounds.Builder();
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服务获取数据后被调用一次(但不起作用)。
当用户按下按钮(但仍然不工作)时,会再次调用它。
当用户按下按钮时,它会再次被调用更多次,并从那时起正常工作
谢谢您的帮助。第一次按下按钮将地图的可见性设置为“从消失到可见”,因此它实际上尚未初始化。 归功于马辛·奥洛夫斯基。 我通过添加以下内容来修复它: addOnLayoutChangeListener(新的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()”是包含摄影机动画代码的函数
谢谢大家。我成功地使用了
onmapploadedcallback
,如下所示:
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
}
});
检查日志cat是否有任何错误消息,但在前两个时刻,您的映射似乎尚未初始化calls@MarcinOrlowski这不可能是问题,正如他在按下一个按钮后所说,它仍然不起作用。它可以。GMaps是异步初始化的。如果他在地图加载之前滥发这个按钮。它也可能与m无关aps——如果在第一次按钮单击后,由于任何原因,
filteredList
未正确初始化,则映射将不会更新。我还将查看填充filteredList
的逻辑。