Android谷歌地图移动相机不起作用

时间:2017-07-19 17:22:25

标签: android google-maps

我已经查看了我能找到的所有内容,但还没有找到解决方案。我正在尝试做一些非常简单的事情:

protected void moveCamera(final LatLng position, final float zoom) {
    getMap(new OnMapReadyCallback() {
        @Override
        public void onMapReady(final GoogleMap googleMap) {

            logger.debug("Moving map to " + position);
            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(position)
                    .zoom(zoom)
                    .build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

        }
    });
}

什么都没发生。没有错误,没有相机移动。我也试过了moveCamera。我尝试过对CameraUpdateFactory的不同类型的来电,我尝试过单独移动和缩放,我尝试使用Handler进行延迟发布。有时候这种方法很完美,但是如果我将片段与地图一起放回去,那么它就不起作用了。地图重置为纬度0,0和标准地图类型(它被设置为混合),我无法做任何事情。我知道该方法是通过记录语句调用的。我需要做些什么样的生命周期才能确保地图可以恢复?

我真的不想切换到Mapbox或其他东西,因为修复一个小bug会有很多工作,但我需要这个才能正常工作。

3 个答案:

答案 0 :(得分:1)

请尝试使用此代码解决此相机问题。 您可以更改缩放级别,半径。

int width = getResources().getDisplayMetrics().widthPixels;
    int height = getResources().getDisplayMetrics().heightPixels;
    height = Math.round(0.45f*height);
    int padding = (int) (width * 0.10);

LatLngBounds.Builder builder = new LatLngBounds.Builder();
LatLngBounds bounds = builder.include(new LatLng(INSERT_LAT,
                            INSERT_LNG)).build();
CameraUpdate cameraUpdate = 
CameraUpdateFactory.newLatLngBounds(bounds,width,height,padding);
    googleMap.moveCamera(cameraUpdate);
    googleMap.animateCamera(CameraUpdateFactory.zoomTo(14), 1000, null);

答案 1 :(得分:0)

我使用了以下内容并且工作正常:

GoogleMap mGoogleMap;

LatLngBounds bounds = builder.build();
int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
height = Math.round(0.45f*height);
int padding = (int) (width * 0.10);


CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,width,height,padding);

// Add this where you want to move map camera
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng("<pass_LatLng_here"));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(14)); //set the zoom level here

答案 2 :(得分:0)

对我来说,Places Autocomplete api中onPlaceSelected回调内部的移动摄像头不起作用。

我将moveCamera移到了runOnUiThread中,并且现在工作正常。