2013-08-01 41 views
4

我正在編寫一個Android應用程序,其中包含使用Google Maps API的地圖。如何使用適用於Android中Google Maps API的設備像素密度的自定義貼圖?

我使用自己的擴展名com.google.android.gms.maps.model.UrlTileProvider加載自定義地圖圖塊。

我有兩套地圖拼貼:一種是爲高密度屏幕設計的,另一種是爲低密度屏幕設計的。較高密度的地圖圖塊集具有較大的文字等等。這兩組都使用256x256像素的地圖圖塊大小。

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
Float density = displayMetrics.xdpi/DisplayMetrics.DENSITY_DEFAULT; 

到目前爲止好:

我從獲得取決於屏幕密度兩組之間切換。

根據密度顯示適當的地圖圖塊集合,因爲它應該如此。然而,在更高密度的設備(其中許多像素被視爲一個邏輯密度無關像素(DiP/DP))中,每個地圖塊像素被縮放以匹配一個設備DiP/DP。換句話說,設備功能越高,地圖圖塊渲染時的外觀就越差。

我一直玩構造函數的寬度/高度,但他們似乎沒有任何效果。

而且我無法在Google Maps API中找到任何設置來幫助我解決問題。

我還沒有在stackoverflow或其他網站上找到任何解決方案。

有誰知道如何解決我的問題?

+1

您是否嘗試過針對不同的DPI使用不同的圖像尺寸? 384爲HDPI,512爲XHDPI等。 –

+0

@MaciejGórski:感謝您的迴應!恐怕你的建議不能成爲我的解決方案,因爲地圖圖塊是從我沒有的外部服務加載的。不過,如果您確實控制地圖平鋪服務,那麼您的建議值得研究。 –

+0

您是否找到Steinar解決方案? – aez

回答

0

您可以從相應的drawable文件夾中檢索您的瓷磚作爲Drawable,而不是嘗試手動解析分類器。

+0

不幸的是,瓷磚不在我的drawables文件夾中,而是從外部服務加載。有很多瓷磚,所以它必須這樣。此外,Google Maps API for Android僅支持從TileProvider的實現中加載自定義地圖圖塊([link](http://developer.android.com/reference/com/google/android/gms/maps/model/TileProvider.html) )。在我看來,Google Maps API for Android始終顯示1像素像素爲1次下注。 –

0

如果您不控制服務器,那麼您無法控制質量。

您可以從縮放級別加載4個圖像,並將它們合併到512 x 512大小的位圖中,以便在xhdpi設備上使用。我將首先檢查TileProvider是否可以正確處理更大的圖像。

相關問題