动态放大 Google 地图 API v2 Android
Dynamic zoom in Google Maps API v2 Android
在Google Maps API v2 中,方法animateCamera
用于定义查看的缩放级别。例如,
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat1, lng1), 12));
此处,缩放级别固定为 12。如何确保此处固定的缩放值,将允许用户查看沿途的源点和目标点而无需手动缩放.
我知道使用试错法和一些 if-else
条件,可以确定这些值。但是有没有更复杂的方法来做到这一点?
您可以像这样使用 LatLngBounds:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(startPoint);
builder.include(endPoint);
LatLngBounds bound = builder.build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bound, 25), 1000, null);
startPoint 和 endPoint 是 LatLng 对象。
Rajat 的答案是正确的,但您需要等待地图加载,否则您可能会收到错误 "map size is 0"。
googleMap.setOnMapLoadedCallback(this);
...
@Override
public void onMapLoaded() {
if (googleMap != null) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(startPoint);
builder.include(endPoint);
LatLngBounds bound = builder.build();
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bound, 40));
}
}
在Google Maps API v2 中,方法animateCamera
用于定义查看的缩放级别。例如,
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat1, lng1), 12));
此处,缩放级别固定为 12。如何确保此处固定的缩放值,将允许用户查看沿途的源点和目标点而无需手动缩放.
我知道使用试错法和一些 if-else
条件,可以确定这些值。但是有没有更复杂的方法来做到这一点?
您可以像这样使用 LatLngBounds:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(startPoint);
builder.include(endPoint);
LatLngBounds bound = builder.build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bound, 25), 1000, null);
startPoint 和 endPoint 是 LatLng 对象。
Rajat 的答案是正确的,但您需要等待地图加载,否则您可能会收到错误 "map size is 0"。
googleMap.setOnMapLoadedCallback(this);
...
@Override
public void onMapLoaded() {
if (googleMap != null) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(startPoint);
builder.include(endPoint);
LatLngBounds bound = builder.build();
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bound, 40));
}
}