我已经查看了我能找到的所有内容,但还没有找到解决方案。我正在尝试做一些非常简单的事情:
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会有很多工作,但我需要这个才能正常工作。
答案 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中,并且现在工作正常。