- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要移动相机以覆盖其上的所有标记。因此,我构建了 LatLngBounds
,然后尝试调用 mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, 15))
。问题是,当我使用 moveCamera()
方法时,我得到了 IllegalStateException
,但是当我使用 animateCamera()
时,一切正常。我在 onMapReady
回调中调用了这两种方法。这是怎么回事?
我的堆栈跟踪(主要部分):
java.lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions.
怎么可能一种方法知道 map 大小而另一种方法不知道呢?
最佳答案
根据 documentation , map 布局完成前不能使用该接口(interface)。它说
Note: Only use the simpler method newLatLngBounds(boundary, padding) to generate a CameraUpdate if it is going to be used to move the camera after the map has undergone layout. During layout, the API calculates the display boundaries of the map which are needed to correctly project the bounding box. In comparison, you can use the CameraUpdate returned by the more complex method newLatLngBounds(boundary, width, height, padding) at any time, even before the map has undergone layout, because the API calculates the display boundaries from the arguments that you pass.
但是您可以在 OnCameraChangeListener
中使用 newLatLngBounds()
方法。一切都会完美运行,您无需计算屏幕尺寸。据我所知,这个事件发生在 map 大小计算之后。
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
// Move camera.
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 15));
// Remove listener to prevent position reset on camera move.
mMap.setOnCameraChangeListener(null);
}
});
关于android - animateCamera 有效,而 moveCamera 不适用于 GoogleMap - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797989/
问题: 1) map 动画到达所需位置(代码中的第 4 行)但它被缩放到默认位置(代码中的第 5 行) [将 map 保留在指定缩放级别的默认位置] 2) 我明白为什么会出现这个问题,但我不知道如何解
我有以下更新 map 的方法: private void setCamera() { if (currentLocation != null) { String
我完全不知道如何在 android SDK 中使用“animateCamera”的回调功能。 我想使用 onFinish 功能,谢谢。 public final void animateCamera(
我是 React Native 的新手,我想在特定位置为 map 设置动画,我将使用已弃用且有时不工作的 animateToCoordinates。 新的方法是 animateCamera 但我不知道
我在布局中使用 GoogleMap/MapView,但作为 View 而不是 fragment (因为父项需要是 fragment ),因此 fragment 的布局包括: fragment 包含以
构建 react-native-maps 并尝试确定使用 animateToRegion 与 animateCamera 的优缺点。过去,我们在区域基础上处理所有事情。 似乎区域是更好的选择,因为您不
我有一个 onClusterItemClickListener。我希望谷歌地图 (v2) 动画到那个位置,所以我使用 CameraUpdateFactory.newCameraPosition。 问题
我对从新 Google Maps API 嵌入 SuportMapFragment 的 Fragment 有疑问。创建我的 fragment 时,它从 onResume 方法开始的 AsyncTask
我正在使用 Android 版 Google map 。我需要将相机移动到某个位置并同时放大。 我像这样构建我的CameraUpdate: CameraPosition cameraPosit
我正在尝试放大 map CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(mBounds, this.getResourc
我需要移动相机以覆盖其上的所有标记。因此,我构建了 LatLngBounds,然后尝试调用 mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(la
Google map 文档 根据 Google maps document ,为了将 CameraUpdate 应用于 map ,我们可以立即移动相机(通过使用 GoogleMap.moveCamer
我对使用 CameraUpdateFactory.newLatLngBounds() 的 moveCamera 和 animateCamera 的准确性有一些疑问。我比较了一个 LatLngBound
这些方法有什么区别 public final void moveCamera(CameraUpdate更新)和public final void animateCamera (CameraUpdate
我是一名优秀的程序员,十分优秀!