Tôi đã tạo nhiều bản vẽ tùy chỉnh trong chế độ xem bản đồ của mình. Thật không may các drawables mở rộng khi thu nhỏ (khi họ nên đã thu nhỏ). Để giải quyết vấn đề này, tôi theo dõi người dùng phóng to hoặc thu nhỏ trong một lần chạy. Nếu thu phóng thay đổi, tôi đã vẽ lại bản đồ. Đây là mã của tôi:
private Runnable zoomChecker = new Runnable()
{
public void run()
{
//check for updates
if((mLastUpdate>UPDATE_INTERVAL)&&(!DISPLAY_RED_CIRCLE)&&(!DISPLAY_ROUTE_LAYOUT)){
updateRouteInformation();
mLastUpdate = 0;
}else{
mLastUpdate += 200;
}
//check for zoom level changes
int testZoomLevel = mMapView.getZoomLevel();
if((testZoomLevel!=mZoomLevel)&&(DISPLAY_RED_CIRCLE)){
//set that user is zooming
mStillZooming = true;
//remove overlays and clear map
removeOverlayItems();
mMapView.invalidate();
//set zoom level as same
mZoomLevel = testZoomLevel;
}
if((testZoomLevel==mZoomLevel)&&(mStillZooming)){
displayDriverBoundaries(MAP_DRIVER);
}
handler.removeCallbacks(zoomChecker); // remove the old callback
handler.postDelayed(zoomChecker, zoomCheckingDelay); // register a new one
}
};
Nguồn
2011-10-27 15:24:37
Bạn có (hoặc bất cứ ai khác) tìm thấy một giải pháp cho điều này? Nó đã được lái xe tôi batty trong nhiều tháng. –
Cách giải quyết mà tôi tìm thấy là làm mới bản đồ chỉ sau 500ms mà bản đồ đã được phóng to, theo cách này lớp phủ được vẽ sau khi bản đồ đã được phóng to. Tôi thêm sự kiện với Handler.postDelayed(). Hy vọng điều này sẽ giúp – Itsik
Tôi đã sử dụng MapView khá lâu, không nhận thấy vấn đề này. Nếu có thể, vui lòng đăng mã/luồng của bạn để hiểu logic tốt hơn. – arcamax