2013-01-14 5 views
7

Obecnie pracuję nad aplikacją, która używa niestandardowego TileSource do wyświetlania danych w Google Maps. Otrzymuję te dane w postaci obrazów * .png i używam URLTileProvider.Tworzenie przezroczystości TileOverlays

Wszystko działa dobrze, ale teraz próbuję uczynić TileLayer przezroczystym, a przynajmniej częściowo. Celem jest, aby warstwa była widoczna, ale bazowe Mapy Google wciąż świecą. Jakoś utknąłem, ponieważ nie wiem, jak to osiągnąć.

  • Nie mogę znaleźć drogę do pełnego wdrożenia niestandardowego TileProvider, wydaje się można tylko przedłużyć URLTileProvider
  • Serverside imagemanipulation nie jest możliwe, ponieważ dane są podane
  • Nie ma opcji, żeby dokonać TileOverlay przezroczysty? (Alfa, przezroczystość, przejrzystość)

Byłbym bardzo pomocne, jeśli ktoś mógłby schować mnie we właściwym kierunku, albo powiedz mi, czy Google Maps API V2 dla Androida naprawdę nie obsługuje tej funkcji.

Odpowiedz

4

W tej chwili nie można określić przezroczystości dla TileOverlay na mapach Androida sdk v2. Niestety metoda setTransparency(float) jest dostępna tylko dla GroundOverlay. Jedynym sposobem na to jest zaimplementowanie własnego TileProvider i zmiana png 'on-the-fly', aby zmienić kanał alfa.

+1

W ten sposób zrobiłem to w końcu: Stworzyłem własny niestandardowy TileProvider, który pobrał płytkę za pośrednictwem strumienia danych z adresu URL, a następnie wygenerował bitmapę za pomocą 'BitmapFactory.decodeByteArray' w celu modyfikacji za pomocą tej funkcji: ' private Bitmap adjustOpacity (Bitmap bitmap) ' Bitmap.Config conf = Bitmap.Config.ARGB_8888; Bitmap bmp = Bitmap.createBitmap (256, 256, conf); Płótno canvas = nowe płótno (bmp); Farba malarska = nowa farba(); paint.setAlpha (tileOpacity); canvas.drawBitmap (mapa bitowa, 0, 0, farba); return bmp; } – Elysium

+0

Mam podobny problem, Elysium i ja również mam własny TileProvider. Ale uważam, że nie mogę zmienić przejrzystości kafelka po jego narysowaniu. Czy używasz "adjustOpacity" w dowolnym momencie po jego narysowaniu? – aez

+0

Czy zmieniłeś bitmapę z powrotem na bajt [] po dopasowaniu krycia? W przeciwnym razie, w jaki sposób utworzyłeś kafelek z bitmapy do zwrócenia przez getTile()? Dzięki. – paul

1

Czy możesz sprawić, że obrazy płytek będą przezroczyste? URLTileProvider może wskazywać dowolne obrazy, więc jeśli obraz ma alfa, powinien działać.

Możesz zaimplementować TileProvider bezpośrednio, ale w tym przypadku musisz zająć się ładowaniem własnych danych obrazu. Wydaje się, że byłoby to bardziej pożądane, gdybyś chciał generować kafle dynamicznie na kliencie.

Powiązane problemy