我试图这样做,以便当我启动我的应用程序时,手机将放大并居中到我已经通过一个lat和lang点的ArrayList设置PolyLines的区域。
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
ArrayList<MyPoint> points = Data.getPoints();
PolylineOptions polylineOptions = new PolylineOptions();
for (int i = 0; i < points.size(); i++) {
MyPoint point = points.get(i);
polylineOptions.add(new LatLng(point.getLat(), point.getLng()));
}
Polyline polyline = mMap.addPolyline(polylineOptions);
}
我在genymotion中启动应用程序,然后放大,然后以我设置的lat / lang ArrayList点为中心。 目前,我只是得到一张几乎显示整个地球的地图,我必须手动放大到我设置的折线。
答案 0 :(得分:4)
您需要相机更新工厂类来创建相机更新并移动地图的相机。 Camera Update Factory Documentation
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
ArrayList<MyPoint> points = Data.getPoints();
int padding = 20; // or prefer padding
LatLngBounds.Builder builder = new LatLngBounds.Builder();
PolylineOptions polylineOptions = new PolylineOptions();
for (int i = 0; i < points.size(); i++) {
MyPoint point = points.get(i);
polylineOptions.add(new LatLng(point.getLat(), point.getLng()));
builder.include(new LatLng(point.getLat(), point.getLng()));
}
Polyline polyline = mMap.addPolyline(polylineOptions);
LatLngBounds bounds = builder.build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, padding));
}
答案 1 :(得分:3)
您需要使用LatLngBounds
,然后缩放相机以覆盖所有包含的标记:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
在循环中对所有点/标记使用以下行:(您可以使用用于向polylineOptions添加点的相同循环。)
builder.include(pointLatLng);
最后,(在循环之外) -
LatLngBounds bounds = builder.build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 20));