Tương tự như câu trả lời ggomeze của bằng cách ghi đè một phương pháp *draw()
nhưng nó có thể tốt hơn để ghi đè dispatchDraw()
trong MapView
. Bằng cách này, bạn có thể chặn bản vẽ cho mức thu phóng nơi các ô trống. Cũng xin lưu ý rằng tốt để căn giữa bản đồ vào thời điểm này như thể bạn đang phóng to bằng cử chỉ cảm ứng bằng cách đặt mức thu phóng theo cách thủ công có thể khiến bản đồ dịch chuyển ra khỏi tâm mỗi lần (làm cho giao diện MapView
một chút tinh ranh hơn!).
@Override
public void dispatchDraw(Canvas canvas) {
//limit zoom level
if(getZoomLevel() == 1){
getController().setZoom(2);
getController().setCenter(new GeoPoint(0, 0));
//dont draw as it will just be blank and then jump
return;
}
super.dispatchDraw(canvas);
}
Điều này có thể được cải thiện khi bằng cách theo dõi mức độ phóng trong khi cử chỉ đang diễn ra cũng vì vậy người dùng không thể nhìn thấy zoom một phần với mức zoom thấp nhất bị chặn (1) khi dùng cử chỉ, nhưng tôi tưởng tượng trường hợp trên sẽ phù hợp với hầu hết và dễ dàng hơn nhiều!
Cảm ơn câu trả lời nhanh. Tuy nhiên, đây không phải là một giải pháp cho vấn đề của tôi. Với mã đó, bạn chỉ cần thiết lập mức thu phóng ban đầu. Nhưng điều đó không tránh người dùng có thể thu nhỏ và có chế độ xem bản đồ xấu xí với mức thu phóng bằng 1 (hai châu phi, hai châu Mỹ) – ggomeze
nếu u không tìm tùy chọn standart, đặt giới hạn thủ công :) – polyakovsky
Tại sao bạn có giới hạn những gì người dùng có thể làm không? Nếu họ muốn nhìn toàn thế giới thì sao? – Falmarri