2013-01-14 11 views
7

Attualmente sto lavorando a un'app che utilizza un oggetto TileSource personalizzato per visualizzare i dati su Google Maps. Ottengo quei dati sotto forma di immagini * .png, e sto usando l'URLTileProvider.Rendi trasparente TileOverlays

Tutto sta funzionando bene, ma ora sto cercando di rendere il TileLayer trasparente, o almeno, in parte. L'obiettivo è che il livello sia visibile, ma la sottostante Google Maps continua a brillare. In qualche modo sono bloccato, perché non so come raggiungerlo.

  • Non ho trovato un modo per attuare pienamente un TileProvider personalizzato, pare si può estendere solo URLTileProvider
  • Serverside imagemanipulation non è possibile, in quanto i dati è dato
  • Non ci sono opzioni per fare un TileOverlay trasparente? (alfa, opacità, trasparenza)

Sarei molto utile se qualcuno mi suggerisse nella giusta direzione, o dimmi se l'API V2 di Google Maps per Android in realtà non supporta questa funzione.

risposta

4

In questo momento non è possibile specificare la trasparenza per TileOverlay nelle mappe Android sdk v2. Sfortunatamente il metodo setTransparency(float) è disponibile solo per GroundOverlay .. L'unico modo per farlo è implementare il proprio TileProvider e modificare png 'al volo' per cambiare canale alfa.

+1

Questo è il modo in cui l'ho fatto alla fine: ho creato il mio TileProvider personalizzato che fetchted Tile tramite un InputStream dall'URL, poi generato una bitmap tramite 'BitmapFactory.decodeByteArray' per la modifica con questa funzione: ' privato Bitmap adjustOpacity (Bitmap bitmap) ' Bitmap.Config conf = Bitmap.Config.ARGB_8888; Bitmap bmp = Bitmap.createBitmap (256, 256, conf); Tela canvas = new Canvas (bmp); Paint paint = new Paint(); paint.setAlpha (tileOpacity); canvas.drawBitmap (bitmap, 0, 0, paint); ritorno bmp; } – Elysium

+0

Ho un problema simile a Elysium e ho anche il mio TileProvider. Ma trovo che non posso cambiare la trasparenza della tessera dopo che è stata disegnata. Usi il tuo "adjustOpacity" in qualsiasi momento dopo che è stato disegnato? – aez

+0

Hai riconvertito la bitmap in un byte [] dopo aver regolato l'opacità? Altrimenti, come hai creato una Tile da una Bitmap per essere restituita da getTile()? Grazie. – paul

1

È possibile rendere trasparenti le immagini delle tessere? URLTileProvider può puntare a qualsiasi immagine, quindi se l'immagine ha alpha, dovrebbe funzionare.

È possibile implementare direttamente un TileProvider, ma in tal caso sarà necessario caricare i propri dati di immagine. Sembra che sarebbe più desiderabile se si desidera generare piastrelle in modo dinamico sul client.

Problemi correlati