2012-08-30 39 views

Trả lời

2

Các tài liệu onDraw cho MapView nói

"Chúng tôi vẽ nền bản đồ (bốc gạch cho phù hợp)"

Bạn có thể thử mở rộng MapView và ẩn chỉ số tiến bộ như onDraw kết thúc. Nhưng dự đoán của tôi là MapTiles được tải không đồng bộ nên thanh tiến trình của bạn sẽ kết thúc trước khi MapTiles được tải xong.

+0

Xin chào, bạn có giải pháp được cập nhật không? thx –

+0

Tôi không xin lỗi, chưa thực hiện bất kỳ nhà phát triển Android nào trong vài năm nay. –

0

Không có API trực tiếp để thực hiện việc này trong triển khai MapView hiện tại.

4

Bạn có thể sử dụng OnCameraChangeListenerOnMapLoadedCallback để mô phỏng hành vi này.

Từ the documentation của GoogleMap.OnCameraChangeListener:

public abstract trống onCameraChange (vị trí CameraPosition)

Được gọi là sau khi vị trí camera đã thay đổi. Trong một hoạt ảnh, người nghe này có thể không được thông báo về vị trí máy ảnh trung gian. Nó luôn được gọi cho vị trí cuối cùng trong hoạt ảnh.

Điều này được gọi trên chuỗi chính.

Từ the documentation của GoogleMap.OnMapLoadedCallback:

public void trừu tượng onMapLoaded()

gọi khi bản đồ đã kết thúc hiển thị. Điều này sẽ chỉ được gọi là một lần. Bạn phải yêu cầu một cuộc gọi lại khác nếu bạn muốn được thông báo một lần nữa.

Như đã trình bày ở đó, onMapLoaded() sẽ chỉ gọi một lần, vì vậy chiến lược có thể yêu cầu một GoogleMap.OnMapLoadedCallback mỗi lần onCameraChange được gọi.

Đây là một (rất đơn giản) ví dụ để minh họa cho câu trả lời:

public class MapsActivity extends FragmentActivity implements OnCameraChangeListener, OnMapLoadedCallback { 
    private GoogleMap googleMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
     googleMap = mapFragment.getMap(); 

     googleMap.setOnCameraChangeListener(this); 
    } 

    @Override 
    public void onMapLoaded() { 
     //TODO: Hide your progress indicator 
    } 

    @Override 
    public void onCameraChange(final CameraPosition cameraPosition) { 
     googleMap.setOnMapLoadedCallback(this); 

     //TODO: Show your progress indicator 
    } 
} 
+0

Chắc chắn những gì tôi đang tìm kiếm. Có vẻ như phải mất quá nhiều thời gian để 'onMapLoaded()' được gọi, nhưng đó là vì bản đồ tải tất cả các địa điểm, vv Chắc chắn là đúng API. Cảm ơn bạn! Nên là câu trả lời được chấp nhận IMHO. –

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