@@ -45,17 +45,6 @@ double OpenStreetMap::lat2tile(double lat, uint8_t zoom)
4545 return (1.0 - log (tan (latRad) + 1.0 / cos (latRad)) / M_PI) / 2.0 * (1 << zoom);
4646}
4747
48- OpenStreetMap *OpenStreetMap::currentInstance = nullptr ;
49-
50- void OpenStreetMap::PNGDraw (PNGDRAW *pDraw)
51- {
52- if (!currentInstance || !currentInstance->currentTileBuffer )
53- return ;
54-
55- uint16_t *destRow = currentInstance->currentTileBuffer + (pDraw->y * OSM_TILESIZE);
56- currentInstance->png .getLineAsRGB565 (pDraw, destRow, PNG_RGB565_BIG_ENDIAN, 0xffffffff );
57- }
58-
5948void OpenStreetMap::computeRequiredTiles (double longitude, double latitude, uint8_t zoom, tileList &requiredTiles)
6049{
6150 // Compute exact tile coordinates
@@ -366,6 +355,17 @@ std::optional<std::unique_ptr<MemoryBuffer>> OpenStreetMap::urlToBuffer(const St
366355 return buffer;
367356}
368357
358+ OpenStreetMap *OpenStreetMap::currentInstance = nullptr ;
359+
360+ void OpenStreetMap::PNGDraw (PNGDRAW *pDraw)
361+ {
362+ if (!currentInstance || !currentInstance->currentTileBuffer )
363+ return ;
364+
365+ uint16_t *destRow = currentInstance->currentTileBuffer + (pDraw->y * OSM_TILESIZE);
366+ currentInstance->png .getLineAsRGB565 (pDraw, destRow, PNG_RGB565_BIG_ENDIAN, 0xffffffff );
367+ }
368+
369369bool OpenStreetMap::fetchTile (CachedTile &tile, uint32_t x, uint32_t y, uint8_t zoom, String &result)
370370{
371371 const uint32_t worldTileWidth = 1 << zoom;
@@ -383,10 +383,10 @@ bool OpenStreetMap::fetchTile(CachedTile &tile, uint32_t x, uint32_t y, uint8_t
383383 if (!buffer)
384384 return false ;
385385
386- PNGDecoderRAII png ( PNGDraw);
387- if (!png. open (buffer. value ()-> get (), buffer. value ()-> size ()) )
386+ const int16_t rc = png. openRAM (buffer. value ()-> get (), buffer. value ()-> size (), PNGDraw);
387+ if (rc != PNG_SUCCESS )
388388 {
389- result = " PNG Decoder Error" ;
389+ result = " PNG Decoder Error: " + String (rc) ;
390390 return false ;
391391 }
392392
0 commit comments