2013-06-18 16 views
6

Tôi có một bản đồ google (com.google.android.gms.maps.GoogleMap) nơi tôi đã đặt một số điểm đánh dấu.Làm cách nào để điều chỉnh mức thu phóng phù hợp với ranh giới và sau đó là bản đồ trung tâm trong điểm đánh dấu điểm đánh dấu?

tôi có thể, riêng biệt,

1) điều chỉnh mức zoom và trung tâm bản đồ trên một ranh giới:

mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10)); 

2) Trung tâm bản đồ trên một trong những cột mốc :

LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude 
    + offset, markerSelected.getPosition().longitude); 

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng)); 

nhưng, trong cuộc sống của tôi, tôi không thể làm cả hai, điều chỉnh mức thu phóng bằng cách sử dụng ne wLatLngBounds và sau đó căn giữa bản đồ ở một nơi khác. Bất cứ điều gì tôi làm cuối cùng là những gì tôi thấy xảy ra trên bản đồ.

Làm cách nào để thực hiện việc này?

Trả lời

1

Hãy thử sử dụng cả hai moveCameraanimateCamera ...

mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10)); 
LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude 
    + offset, markerSelected.getPosition().longitude); 

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng)); 

moveCamera sẽ chuyển trực tiếp đến vị trí đó khi animateCamera sẽ cung cấp các hiệu ứng chuyển động. Họ là tuyến tính trong tự nhiên vì vậy một sẽ xảy ra sau khi khác tuy nhiên phân lớp chúng như tôi đã làm ở trên sẽ cung cấp các hiệu ứng tiềm năng bạn đang tìm kiếm.

Nếu bạn đang cố gắng để xem chuyển động thực tế của cả hai cuộc gọi trên giao diện người dùng, bạn sẽ cần phải đăng ký cho các bài gọi lại hoàn thành các hình ảnh động khi cần thiết.

+0

Cảm ơn - điều đó đã xảy ra. – Miki

+0

Không cần xe buýt sự kiện, chuỗi hoặc bất kỳ thứ gì khác để kết nối hai cuộc gọi animateCamera. Có một cuộc gọi lại khi hoạt ảnh kết thúc. –

+0

@ MaciejGórski Điểm tốt, được chỉnh sửa phù hợp. –

3

Đối với du khách trong tương lai đây là cách bạn có thể hình ảnh động camera chuỗi:

map.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10), 2000, new CancelableCallback() { 

    @Override 
    public void onFinish() { 
     LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude + offset, markerSelected.getPosition().longitude); 
     map.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng)); 
    } 

    @Override 
    public void onCancel() { 
    } 
}); 

Xem thêm AnimateCameraChainingExampleActivity.java cho một ví dụ làm thế nào để chuỗi vô hạn.