2013-07-12 45 views
7

Có cách nào để thực hiện một zoom bản đồ càng nhiều càng tốt nhưng vẫn giữ tất cả các điểm đánh dấu trên màn hình cùng một lúc. Tôi có sáu điểm đánh dấu không đồng đều. Tôi đã nghĩ đến việc chỉ lấy trung tâm của họ và định vị bản đồ đó, nhưng tôi vẫn không biết tôi có thể phóng to trên bản đồ đến mức nào.Google Maps dành cho Android trung tâm V2 API dấu

Những dấu hiệu thay đổi vị trí mỗi khi bản đồ được tạo ra. Lý tưởng nhất là tôi sẽ có một kịch bản thu phóng bản đồ để tất cả được bao gồm trong chế độ xem.

Vì vậy, bạn hiểu. Tôi tạo ra các đánh dấu một tại một thời điểm từ json với dòng sau trong một vòng lặp.

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title"))); 

Trả lời

23

Bạn nên sử dụng lớp CameraUpdate để làm (có thể) tất cả các chuyển động bản đồ có lập trình.

Để làm điều này, đầu tiên tính toán giới hạn của tất cả các dấu hiệu như vậy:

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for each (Marker m : markers) { 
    builder.include(m.getPosition()); 
} 

LatLngBounds bounds = builder.build(); 

Sau đó, lấy một đối tượng mô tả phong trào bằng cách sử dụng các nhà máy: CameraUpdateFactory:

int padding = 0; // offset from edges of the map in pixels 
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 

Cuối cùng di chuyển bản đồ :

googleMap.moveCamera(cu); 

Hoặc nếu bạn muốn hoạt ảnh:

googleMap.animateCamera(cu); 

* Got từ bài khác: Android map v2 zoom to show all the markers

+1

Ông có thể liên kết đến các bài bản gốc bạn thu được từ một số ngữ cảnh hơn . – Somk

+0

Đó là toàn bộ điều. bất kỳ cách nào ở đây. http://stackoverflow.com/a/14828739/1837759 –

+0

Cảm ơn bạn. Dòng này gây ra cho tôi sự nhầm lẫn mặc dù foreach (Marker m: markers) { Làm cách nào để có được các điểm đánh dấu? – Somk

Các vấn đề liên quan