/**
   * Converts TMS tile coordinates to QuadTree
   *
   * @param aTile The tile coordinates to convert
   * @return The QuadTree as String.
   */
  protected String quadTree(final MapTile aTile) {
    final StringBuilder quadKey = new StringBuilder();
    for (int i = aTile.getZoomLevel(); i > 0; i--) {
      int digit = 0;
      final int mask = 1 << (i - 1);
      if ((aTile.getX() & mask) != 0) digit += 1;
      if ((aTile.getY() & mask) != 0) digit += 2;
      quadKey.append("" + digit);
    }

    return quadKey.toString();
  }
  public byte[] getImage(final ITileSource pTileSource, final MapTile pTile) {

    try {
      byte[] bits = null;
      final String[] tile = {COLUMN_TILE};
      final long x = (long) pTile.getX();
      final long y = (long) pTile.getY();
      final long z = (long) pTile.getZoomLevel();
      final long index = ((z << z) + x << z) + y;
      final Cursor cur =
          mDatabase.query(
              TABLE,
              tile,
              COLUMN_KEY
                  + " = "
                  + index
                  + " and "
                  + COLUMN_PROVIDER
                  + " = '"
                  + pTileSource.name()
                  + "'",
              null,
              null,
              null,
              null);

      if (cur.getCount() != 0) {
        cur.moveToFirst();
        bits = (cur.getBlob(0));
      }
      cur.close();
      if (bits != null) {
        return bits;
      }
    } catch (final Throwable e) {
      Log.w(IMapView.LOGTAG, "Error getting db stream: " + pTile, e);
    }

    return null;
  }