2016-03-04 94 views
1

在某些縮放級別下,地圖圖塊模糊不清而且沒有進行平滑的渲染。自定義地圖圖塊模糊

使用下面的代碼:

public MapTileLayer setupTileLayer(final TileListener listener) { 
TileProvider provider = new TileProvider() { 
     @Override 
     public Tile getTile(int x, int y, int zoom) { 
      String filename = listener.loadTileFilename(x, y, zoom, true); 
      if (filename != null && filename.trim().length() > 0) { 
       byte[] bytes = FileService.getBytesForFile(filename); 
       if (bytes != null) { 
        return new Tile(TILE_SIZE, TILE_SIZE, bytes); 
       } 
      } 
      return null; 
     } 
    }; 
    TileOverlayOptions options = new TileOverlayOptions().tileProvider(provider); 
    options.visible(true); 

    return new GoogleTileLayer(map.addTileOverlay(options)); 
} 

回答

0

使用512x512代替256x256固定問題

1

可能的是什麼問題可以幫助,但無論如何,你應該採取有關瓷磚的大小照顧的圖像。 在大多數設備上,圖塊的大小(或gmaps如何拼接世界)是256x256像素,但在密度更高的設備上(我有使用Nexus 10的經驗),圖塊大小爲512x512。這意味着如果你有/下載一個256的圖塊並且顯示爲512,它會降低質量。 看這裏: https://developers.google.com/maps/documentation/android-api/tileoverlay#coordinates

當創建圖塊層圖像,你需要在你想支持每個縮放級別每個圖塊創建 圖像。 當顯示 拼貼時,Google地圖會以256 dp(設備無關像素)爲目標。對於高分辨率設備,建議您返回 高dpi圖塊(512x512像素)。有關支持不同屏幕尺寸和密度的信息,請參閱Android Developers 文檔。

如果您使用的是URLTileProvider你可以給在構造函數的大小,如果您使用的是自定義創建瓷磚您應該創建2版本的瓷磚(正常/高密度),或簡單地創建高密度並讓系統對普通設備進行縮減。

如果問題不在此,請附上您問題的圖片!

+0

爲什麼downvote?以及爲什麼作者回答並接受他自己的帖子時,我寫了一個更完整的版本(在他之前)解釋同樣的事情? 這很有趣,誰downvoted –