它是关于android和谷歌地图v2。我想用边界设置最大缩放级别。 这是我正在使用的方法:
gMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding));
我发现这个链接给了我一个可能的解决方法 Setting max zoom level in google maps android api v2
这是找到的工作单
gMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
if (position.zoom > DEFAULT_ZOOM)
gMap.animateCamera(CameraUpdateFactory.zoomTo(DEFAULT_ZOOM));
}
});
但是这个解决方案放大到第一个animateCamera
定义的缩放级别,然后缩小到DEFAULT_ZOOM if(DEFAULT_ZOOM< position.zoom)。在这种情况下,有两个animateCamera
如何避免?并只制作一个animateCamera
提前谢谢
答案 0 :(得分:2)
好的,就目前而言,我唯一的解决方案是https://stackoverflow.com/a/19343818/1646479
以下是解决方法:
private LatLngBounds adjustBoundsForMaxZoomLevel(LatLngBounds bounds) {
LatLng sw = bounds.southwest;
LatLng ne = bounds.northeast;
double deltaLat = Math.abs(sw.latitude - ne.latitude);
double deltaLon = Math.abs(sw.longitude - ne.longitude);
final double zoomN = 0.005; // minimum zoom coefficient
if (deltaLat < zoomN) {
sw = new LatLng(sw.latitude - (zoomN - deltaLat / 2), sw.longitude);
ne = new LatLng(ne.latitude + (zoomN - deltaLat / 2), ne.longitude);
bounds = new LatLngBounds(sw, ne);
}
else if (deltaLon < zoomN) {
sw = new LatLng(sw.latitude, sw.longitude - (zoomN - deltaLon / 2));
ne = new LatLng(ne.latitude, ne.longitude + (zoomN - deltaLon / 2));
bounds = new LatLngBounds(sw, ne);
}
return bounds;
}
但是我正在寻找一个解决方案来将android缩放级别(在我的情况下为16)转换为zoomN
。